У меня есть этот интерфейс:Java Reflection: Получить параметр типа родового интерфейса от реализации класса
public interface EventHandler<T extends Event> {
void handle(T event);
}
И этот класс, реализующий его:
public class MyEventHandler implements EventHandler<MyEvent> {
@Override
public void handle(MyEvent event) {
//do something
}
}
Дано:
Class myEventHandlerClass = getClazz();
В этот клас, T
параметр MyEvent
, то есть конкретная реализация Event
. Как можно получить это с помощью рефлексии?
Я хочу что-то вроде этого:
Class myEventHandlerClass = getClazz();
Method handleMethod = myEventhandlerClass.getDeclaredMethod("handle");
Class<?>[] params = method.getParameterTypes();
Class<?> eventConcreteType = params[0];
Но myEventhandlerClass.getDeclaredMethod("handle");
броски NoSuchMethodException
, так как я не указал тип параметра, потому что я просто знаю, что это конкретная реализация Event
, но я не знаю, какой ,
Возможный дубликат [Получить тип общего параметра в Java с отражением] (http://stackoverflow.com/questions/1901164/get-type-of-a -генерический-параметр-в-Java-с-reflectio n) –