一尘不染

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

java

是否可以在Java中创建泛型类型的实例?我正在根据我所看到的答案进行思考no(由于类型擦除),但是如果有人能看到我所缺少的内容,我将很感兴趣:

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

编辑:事实证明,超级类型令牌可以用于解决我的问题,但是它需要很多基于反射的代码,如下面的一些答案所示。


阅读 400

收藏
2020-02-25

共1个答案

一尘不染

你是对的。你做不到new E()。但你可以将其更改为

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

但这有效。以工厂模式包装它会使它更具容忍性。

2020-02-25