【发布时间】:2014-04-03 03:13:18
【问题描述】:
为什么这会给我一个类型安全警告?
MyAwesomeObject<T>[] parent = new MyAwesomeObject[1];
【问题讨论】:
标签: java arrays generics type-conversion suppress-warnings
为什么这会给我一个类型安全警告?
MyAwesomeObject<T>[] parent = new MyAwesomeObject[1];
【问题讨论】:
标签: java arrays generics type-conversion suppress-warnings
这是因为数组通常不适合泛型类型。人们处理具有泛型类型的数据结构的最常见方式是使用列表。
例如,您将创建一个List<T> 对象而不是一个数组。数组不能很好地使用泛型并给你类型安全警告的一个原因是因为数组是co-variant:这意味着它们可以包含子类型。
例如,对象数组可以包含 long 和 int,当您尝试从数组中调用项目时,它们会在运行时失败。使用列表,它可以防止您在编译时插入可能导致代码在运行时失败的子类型。
所以经验法则是使用 List 而不是数组,但是如果您真的打算使用数组并且确定不会将任何子类型插入到数组中,那么您可以添加@SuppressWarnings("unchecked") 上面的行。
【讨论】: