泛型数组创建错误
我正在尝试做这样的事情:-
public static ArrayList<myObject>[] a = new ArrayList<myObject>[2];
myObject 是一个类。我收到此错误:- 通用数组创建(箭头指向新数组。
我正在尝试做这样的事情:-
public static ArrayList<myObject>[] a = new ArrayList<myObject>[2];
myObject 是一个类。我收到此错误:- 通用数组创建(箭头指向新数组。
不能有泛型类的数组。Java根本不支持它。
应考虑使用集合而不是数组。例如
public static ArrayList<List<MyObject>> a = new ArrayList<List<MyObject>();
另一个“解决方法”是创建一个这样的辅助类
class MyObjectArrayList extends ArrayList<MyObject> { }
,然后创建一个数组。MyObjectArrayList
这是一篇关于为什么在语言中不允许这样做的好文章。本文给出了以下示例,说明如果允许,会发生什么情况:
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);
创建泛型数组的方法比使用 List 更简单。
一、让
public static ArrayList<myObject>[] a = new ArrayList[2];
然后初始化
for(int i = 0; i < a.length; i++) {
a[i] = new ArrayList<myObject>();
}