got*_*ch4 5 java generics type-erasure
我正在使用泛型来写东西,令我惊讶的是我发现这不起作用:
class foo<T>{
T innerT = new T();
}
Run Code Online (Sandbox Code Playgroud)
所以我不能实例化泛型类型?有没有办法做到这一点?
Mar*_*cin 13
在运行时,JVM不知道T是什么,因此无法创建类型为T的新对象.在编译期间会删除类型.
是的,这真非常令人讨厌.
我使用的工作是强制客户端在构造新的时传递类foo<T>- 即
public foo(Class<T> myClass)
Run Code Online (Sandbox Code Playgroud)
然后你可以myClass.newInstance()改用.
我总是喜欢创作模式(工厂,原型,......).特别
Run Code Online (Sandbox Code Playgroud)public foo(Class<T> myClass)然后你可以
myClass.newInstance()改用.
是一个糟糕的解决方案,因为T可能没有空构造函数.
| 归档时间: |
|
| 查看次数: |
2436 次 |
| 最近记录: |