Нет, это не работает в Java из-за стирания типа.К тому времени, когда исполняется код, код не знает, что такое T
.
См. FAQ по обобщенным Java * больше информации о дженериках Java, чем вы хотели :) -в частности, см. раздел Erasure .
Если вам нужно знать тип T
во время выполнения, по этой или другим причинам вы можете сохранить его в Class<T>
и возьмите его в конструкторе:
private Class<T> realTypeOfT;
public Foo(Class<T> clazz) {
realTypeOfT = clazz;
}
Затем можно позвонить newInstance()
и т. д.