Из-за стирания типа T
неизвестно во время выполнения, поэтому вы должны передать параметр, чтобы сообщить коду во время выполнения, что такое T
.
public <T extends Component> T getComponent(Class<T> type) {
for (Component component : componentList) {
if (type.isInstance(component)) {
return type.cast(component);
}
}
return null;
}
Затем вызывающий должен укажите параметр следующим образом:
Subcomponent x = getComponent(Subcomponent.class);
К сожалению, нет никакого способа обойти это.