java - 在Java中创建泛型类型的实例?

标签 java generics

是否可以在 Java 中创建泛型类型的实例?根据我所看到的情况,我认为答案是“否”(由于类型删除),但如果有人能看到我缺少的东西,我会很感兴趣:

class SomeContainer<E>
{
    E createContents()
    {
        return what???
    }
}

编辑:事实证明Super Type Tokens可以用来解决我的问题,但它需要大量基于反射的代码,正如下面的一些答案所示。

我会让这个问题暂时开放,看看是否有人想出任何与 Ian Robertson 的 Artima Article 截然不同的东西。 .

最佳答案

你是对的。你不能执行new E()。但你可以将其更改为

private static class SomeContainer<E> {
    E createContents(Class<E> clazz) {
        return clazz.newInstance();
    }
}

很痛苦。但它有效。将其包装在工厂模式中使其更容易忍受。

关于java - 在Java中创建泛型类型的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42532646/

相关文章:

Java 8 : create new instance of class with generics using reflection

c++ - 默认参数和泛型类

java - OCSP 检查 Java 安全套接字

java - 在同一个项目中同时进行 Java 和 Scala 开发

java - 在使用 Java 泛型方面需要一些帮助

c# - 将类型变量作为通用类型参数传递给静态类

java - 如何在java中测试多个交叉点?

java - 在一个方法中使用多个测试用例进行 JUnit 测试

java - 为什么我不能删除并绘制相同的 java 对象?

Java 泛型与列表