Предполагая код, подобный приведенному ниже:
public interface Component<T>
{
}
public class ConcreteComponent<T> implements Component<T>
{
}
Как бы вы решили такую проблему компиляции:
@Override
public Class<? extends Component<?>> getComponentClass() {
// Does not compile!
return ConcreteComponent.class;
}
В принципе, как вы можете видеть, я хотел бы иметь возможность конструировать объект с помощьюотражение с использованием класса компонента.Опуская детали, объявление метода может выглядеть так:
public <T extends Component<?>> void createComponent(Class<? extends T> clazz)
{
}
И наконец:
ConcreteComponent<Integer> cmp = createComponent(getComponentClass());
Любая помощь будет принята с благодарностью!