Я учусь в Java родовое, я загвоздка в какой-то проблемы инстанцировании типа, полученные от общих параметров (это возможно в C#, хотя)инстанцировании Generic в
class Person {
public static <T> T say() {
return new T; // this has error
}
}
Я попытался это: generics in Java - instantiating T
public static <T> T say(Class<?> t) {
return t.newInstance();
}
Ошибка:
incompatible types
found : capture#426 of ?
required: T
Это не работает. Следующее выглядит нормально, но это влечет за собой инстанцирование некоторого класса, не может быть использован на статическом методе: Instantiating generics type in java
public class Abc<T>
{
public T getInstanceOfT(Class<T> aClass)
{
return aClass.newInstance();
}
}
ли это типа стирания Java люди говорят? Это ограничение стирания типа?
В чем проблема с этой проблемой?
+1 и принято, не так элегантно, как C#, хотя (не ваш ошибка ;-)). Кстати, это то, что они называли стиранием стилей, поэтому он не может создать экземпляр T напрямую? – Hao
@Hao: точно: фактический тип T недоступен во время выполнения, поэтому вам нужно передать объект класса, чтобы он был явным. –