Java:列表数组<MyClass>

Java: Array of List<MyClass>

我有一个规范要求我传递一组列表。该数组的长度始终为 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> 类型以外的其他东西,有什么理由我不应该只抑制这个警告并继续前进吗?

鉴于 Java 不允许创建通用数组,因此可以取消警告。 虽然它不安全,但没有其他方法可以使用泛型创建数组,除非您忽略或抑制该警告。

您的情况下的编译器警告您,您的代码不会为您检查要添加到数组中的值的类型。 你可以忽略这个警告,只要你确保只有 ArrayList 类型被添加到你的数组中。

@SuppressWarnings("unchecked") 由于某种原因出现在 java 中,您可以抑制警告并让您的编译器知道您没有不需要它的类型检查。

您不能创建通用数组;见 official Java documentation on the subject.

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

List[] data = new List[2];

当然,这意味着当您开始引用它们的数据并适当地转换它时,您需要检查列表中 to/coming 中所有内容的类型。所以要小心。