Я пытаюсь сделать что-то подобное в Java:
public static <T> T foo() {
return (T) bar(T);
}
public static Object bar(Class<?> klaz) {
return klaz.newInstance();
}
Но код не компилируется, так как я не могу подставить T для класса <? > .
С конкретным классом я могу вызвать bar как:
bar(ConcreteClass.class);
Но то же самое не работает для T. то есть нет такой вещи, как T.class
В С#, typeof работает как для конкретных типов, так и для типов шаблонов. Таким образом, вызов в бар был бы:
bar(typeof(T));
Но я не смог найти ничего подобного на Java.
Я что-то упускаю, или у Java нет способа получить тип параметра шаблона? И если у Java нет объекта, есть ли какие-либо обходные пути?