如何通过泛型类型实例化? [复制]
Posted
技术标签:
【中文标题】如何通过泛型类型实例化? [复制]【英文标题】:How to instantiate by generic type? [duplicate] 【发布时间】:2014-11-04 08:38:02 【问题描述】:是否可以在抽象类中实例化作为泛型类型参数提供的类?
例子:
public MyClass
public MyClass(String test)
是否可以在另一个抽象类中实例化这个类?
public abstract class AbstractClass<T extends MyClass>
public AbstractClass()
T t = new T("test"); //Cannot instantiate the type T
【问题讨论】:
【参考方案1】:这不是那么直截了当。
你需要一个Class<T>
,它会在类型擦除之后保存泛型类型。
然后,您必须调用Class#getDeclaredConstructor(Class< ? > .. params)
来触发所需的构造函数并动态创建新实例。例如:
public abstract class AbstractClass<T extends MyClass>
public AbstractClass(Class<T> clazz)
T t = clazz.getDeclaredConstructor(String.class).newInstance("test");
【讨论】:
以上是关于如何通过泛型类型实例化? [复制]的主要内容,如果未能解决你的问题,请参考以下文章