Instance of type generic
本问题已经有最佳答案,请猛点这里访问。
我的问题是:
为什么不能用新的t()来实例化一个泛型类型,而用你能做的类类的newInstance()来代替?
由于类型擦除:泛型类型在执行时不知道
有关更多信息,请参阅Angelika Langer关于类型擦除的常见问题条目。
您需要使用反射(
也许,你在看这个模式(取自另一个问题的答案):
1 2 3 4 5 6 7 | private static class SomeContainer<E> { E createContents(Class<E> clazz) { return clazz.newInstance(); } } |
在这里,当我们创建一个
如果您在编译时知道类型,请使用"new whatever()"。如果在编译时不知道类型,但可以为其获取类对象,请使用newInstance()。
99%的时间我知道类型并使用"new whatever()"。