关于java:通用数组创建错误

Generic array creation error

本问题已经有最佳答案,请猛点这里访问。

我正在尝试这样做:

1
public static ArrayList<myObject>[] a = new ArrayList<myObject>[2];

MyObject是一个类。我遇到此错误:-创建通用数组(箭头指向"新建")。


不能有泛型类数组。Java根本不支持它。

您应该考虑使用集合而不是数组。例如,

1
public static ArrayList<List<MyObject>> a = new ArrayList<List<MyObject>();

另一个"解决方法"是创建这样的辅助类

1
class MyObjectArrayList extends ArrayList<MyObject> { }

然后创建一个MyObjectArrayList数组。

这是一篇很好的文章,说明为什么在语言中不允许这样做。本文给出了如果允许可能发生的情况的以下示例:

1
2
3
4
5
6
List<String>[] lsa = new List<String>[10]; // illegal
Object[] oa = lsa;  // OK because List<String> is a subtype of Object
List<Integer> li = new ArrayList<Integer>();
li.add(new Integer(3));
oa[0] = li;
String s = lsa[0].get(0);