java - 如何通过泛型实例化?

标签 java generics

<分区>

是否可以在抽象类中实例化作为泛型类型参数提供的类?

例子:

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
    }
}

最佳答案

这不是那么简单。

你需要一个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");
    }
}

关于java - 如何通过泛型实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26730778/

相关文章:

java - 如何防止类型删除?

c# - 在接口(interface)内部声明 IEnumerable<T>,同时在具体类中声明 IList<T>

java - 为什么这个涉及通用接口(interface)方法的程序可以编译?

java - 将外键插入表中

java - 使用 SQLite 数据库保存 CheckBox 状态

java - hibernate 映射两个表失败

java - 多个 keystore 与多个 key 以及 key 的导出/导入

java - 如何从 Java HttpServer 流式传输 M-JPEG?

c# - 使用空参数调用 Type.MakeGenericType()

ios - Swift:使用泛型类型的实例关联类型段错误编译器