Нижеследующее может помочь любому, кто ищет реверсивную реверсию строки. Просили сделать это в недавнем интервью с использованием стиля функционального программирования:
var reverseStr = function(str) {
return (str.length > 0) ? str[str.length - 1] + reverseStr(str.substr(0, str.length - 1)) : '';
};
//tests
console.log(reverseStr('setab retsam')); //master bates
Нет, вы не можете называть «T» во время выполнения.
http://java.sun.com/docs/books/tutorial/java/generics/erasure.html
update Но что-то вроде этого добиться аналогичного эффекта
abstract class EventListener<T> {
private Class<T> type;
EventListener(Class<T> type) {
this.type = type;
}
Class<T> getType() {
return type;
}
abstract void onEvent(T t);
}
И создать слушателя
EventListener<String> e = new EventListener<String>(String.class) {
public void onEvent(String event) {
}
};
e.getType();
Вы не можете сделать это в том подходе, который вы пытаетесь, из-за erasure . Однако, с небольшим изменением дизайна, я считаю, что вы можете достичь того, что вам нужно. Подумайте о добавлении следующего метода в интерфейс EventListener:
public Class<T> getEventClass();
Каждая реализация EventListener должна указать класс событий, с которыми он работает (я предполагаю, что T обозначает тип события). Теперь вы можете вызвать этот метод в методе addEventListener и определить тип во время выполнения.