Java:List <myclass>的数组

时间:2017-01-09 23:26:10

标签: java arrays list generics suppress-warnings

我有一个规范要求我传递一系列列表。数组总是长度2.我使用以下来完成此任务:

List<MyClass> [] data = new ArrayList[2];
data[0] = new ArrayList<MyClass>();
data[1] = new ArrayList<MyClass>();

编译但发出警告:

uses unchecked or unsafe operations.

据我所知,Java中不允许使用泛型数组但是我无法更改规范,上面的代码似乎运行良好。只要我意识到我永远不会将数组的元素重新分配为类型ArrayList<MyClass>以外的其他内容,是否有任何理由我不应该仅仅抑制此警告并继续前进?

3 个答案:

答案 0 :(得分:3)

在您的情况下,编译器警告您,您的代码不会检查您要添加到阵列的值的类型。 您可以忽略此警告,只要您确保只有ArrayList&lt; MyClass&gt;类型已添加到您的数组中。

@SuppressWarnings(&#34;未经检查&#34;)出现在java中的原因,您可以取消警告并让编译器知道您不需要它&# 39; s型检查。

答案 1 :(得分:0)

如果Java不允许创建通用数组,则可以禁止警告。 虽然它不安全,但除非您忽略或禁止该警告,否则没有其他方法可以使用泛型创建数组。

答案 2 :(得分:0)

您无法创建通用阵列;请参阅official Java documentation on the subject

你仍然可以摆脱编译时警告,就像这样......

List[] data = new List[2];

当然,这意味着当您开始引用其数据时,您需要检查列表中的所有内容的类型。适当地施放它。所以要小心。