Q
实例类型的通用
2
A
回答
7
您需要使用反射(newInstance()
),因为在编译时其构造函数需要链接的类未知。所以编译器不能生成链接。
7
由于类型擦除:泛型类型不知道在执行时什么T
是,所以它不能调用正确的构造函数。
1
也许,你看这个模式(从答案带到另一个question):
private static class SomeContainer<E>
{
E createContents(Class<E> clazz)
{
return clazz.newInstance();
}
}
在这里,当我们创建一个SomeContainer
,我们parametize的实例与具体类(如String
) 。 createContents
只接受String.class
而String.class.newInstance()
将创建一个新的(空的)字符串。
0
如果您在编译时知道类型,请使用“new Whatever()”。如果您在编译时不知道该类型,但可以为它获取一个Class对象,请使用newInstance()。
99%的时间我知道类型,我用“新的Whatever()”。
相关问题
- 1. 无法实例与普通类类型
- 2. AWS:通过AMI将实例类型更新为不支持的实例类型
- 3. 实例化的子类通用类型类
- 4. 在运行时使用字段类型实例化通用类
- 5. 实例化实现通用接口实例的所有类
- 6. 将动态类型的实例传递给通用类中的泛型方法
- 7. 实例化通用类时传递类型变量
- 8. “无法实例的类型......”
- 9. 类型的实例变量
- 10. 模型类的codeigniter实例
- 11. 使用泛型类型实例化DynamoDBQueryExpression
- 12. 投泛型类型的实例为“模板”的实例
- 13. 无法实例类型的实例在Java中的Weka类
- 14. 如何在java中动态声明实例的通用类型
- 15. 如何实例化一个未知类型的通用列表?
- 16. 类型类的多态实例实例化
- 17. 泛型类型的返回实例
- 18. 持有泛型类型的实例 - C++
- 19. 从泛型类型的Swift实例化
- 20. 泛型类型的实例化?
- 21. 实例化Kotlin中的泛型类型
- 22. 类的多个实例变量类型?
- 23. Swift:从类的实例获取类型
- 24. 制作类型类的实例列表
- 25. 查找类型的类实例
- 26. 作为类型类实例的函数?
- 27. 类型的类实例重新定义
- 28. DataKinds和类型实例
- 29. 实例化泛型类
- 30. ec2实例cpu类型
关联:http://stackoverflow.com/questions/75175/create-instance-of-generic-type-in-java,http://stackoverflow.com/questions/731452/create-instance-of-泛型 – 2010-07-06 14:35:14
如果'T'没有合适的构造函数呢? – 2010-07-06 15:25:14