一般类型数组的抑制问题

时间:2014-03-02 03:52:21

标签: java arrays generics type-conversion suppress-warnings

为什么这会给我一个类型安全警告?

MyAwesomeObject<T>[] parent = new MyAwesomeObject[1];

1 个答案:

答案 0 :(得分:0)

这是因为数组通常不适合泛型类型。人们使用泛型类型处理数据结构的最常见方式是使用列表。

因此,例如,您将创建一个List<T>对象而不是数组。数组与泛型不匹配并为您提供类型安全警告的一个原因是因为数组共变:意味着它们可以包含子类型。

例如,一个对象数组可以包含long和int,当您尝试从数组中调用项时,它们会在运行时失败。使用Lists,它可以防止您在编译时插入可能导致代码在运行时失败的子类型。

所以经验法则是使用List而不是数组,但是如果你真的打算使用数组并且确定你不会在数组中插入任何子类型,那么你可以添加您提供的行上方的行@SuppressWarnings("unchecked")