我有一个规范要求我传递一系列列表。数组总是长度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>
以外的其他内容,是否有任何理由我不应该仅仅抑制此警告并继续前进?
答案 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];
当然,这意味着当您开始引用其数据时,您需要检查列表中的所有内容的类型。适当地施放它。所以要小心。