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. 通用JNI类型实例化
- 3. 实例化一个知道通用基类的泛型类型
- 4. 无法实例与普通类类型
- 5. AWS:通过AMI将实例类型更新为不支持的实例类型
- 6. 实例化的子类通用类型类
- 7. 如何使用通用类型创建类的实例
- 8. SFINAE用于类型实例
- 9. 在运行时使用字段类型实例化通用类
- 10. 实例化实现通用接口实例的所有类
- 11. 将动态类型的实例传递给通用类中的泛型方法
- 12. 实例化通过反射泛型类/类型名称
- 13. 实例化通用类时传递类型变量
- 14. 类型的实例变量
- 15. 模型类的codeigniter实例
- 16. “无法实例的类型......”
- 17. “无法实例的类型......”
- 18. 回报(类型)实例或返回实例作为类型
- 19. 使用泛型类型实例化DynamoDBQueryExpression
- 20. 投泛型类型的实例为“模板”的实例
- 21. 无法实例类型的实例在Java中的Weka类
- 22. 在DART中创建一个通用类型的实例
- 23. 通用警告 - 没有类型的封闭实例
- 24. 如何实例化一个未知类型的通用列表?
- 25. 如何在java中动态声明实例的通用类型
- 26. NullPointerException异常创建通用类型的实例
- 27. 使用泛型获取类的实例
- 28. 包含通用接口实现实例的Java通用类
- 29. 类型类的多态实例实例化
- 30. 调用通过类的静态实例
关联: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