Нет способа узнать тип T
во время выполнения, поскольку он стирается во время компиляции.
Однако вы можете добавить новый параметр в конструктор типа Class<T>
.Компилятор будет гарантировать, что переданный объект является экземпляром Class
, соответствующим типу T
, который вы указали для своего экземпляра Root
.В вашем конструкторе вы можете затем использовать отражение для создания нового экземпляра T:
class Root<T> {
T var;
public Root(Class<T> klass) {
var = klass.newInstance();
}
}
Это предполагает, что ваш тип T
имеет конструктор по умолчанию.