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

Create instance of generic type in Java?

是否可以在Java中创建泛型类型的实例?我的想法是基于我所看到的答案是no(由于类型删除),但如果有人能看到我丢失的东西,我会感兴趣的:

1
2
3
4
5
6
7
class SomeContainer<E>
{
    E createContents()
    {
        return what???
    }
}

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

我会把这个打开一段时间,看看是否有人想出任何明显不同于伊恩罗伯逊的Artima文章。


你是对的。你不能做new E()。但是你可以把它改成

1
2
3
4
5
private static class SomeContainer<E> {
    E createContents(Class<E> clazz) {
        return clazz.newInstance();
    }
}

这是一种痛苦。但它有效。用工厂的方式包装它会让它更容易接受。