我想要一个ArrayList数组:
ArrayList<MyClass>[] myArray;
我希望通过以下代码来进行初始化:
myArray = new ArrayList<MyClass>[2];
但是我遇到了这个错误:
Cannot create a generic array of ArrayList<MyClass>
我该如何初始化它?
我想要一个ArrayList数组:
ArrayList<MyClass>[] myArray;
我希望通过以下代码来进行初始化:
myArray = new ArrayList<MyClass>[2];
Cannot create a generic array of ArrayList<MyClass>
在Java中,严格来说这是不可能的,自从它被实现以来就一直如此。
你可以像这样解决它:
ArrayList<MyClass>[] lists = (ArrayList<MyClass>[])new ArrayList[2];
这可能会(实际上,应该会)生成一个警告,但是没有其他的方法可以解决它。老实说,你最好创建一个ArrayList
的ArrayList
:
ArrayList<ArrayList<MyClass>> lists = new ArrayList<ArrayList<MyClass>>(2);
List<E>
而不是数组。 - Louis Wasserman你可以使用
HashMap<some key,ArrayList<MyClass>> or ArrayList<ArrayList<MyClass>>
由于数组在编译时是静态的,所以您无法这样做,而应该使用ArrayList。
ArrayList<ArrayList<MyClass>>
这个怎么样?
ArrayList<String>[] f = (ArrayList<String>[]) Array.newInstance(ArrayList.class, size);
for(int ix = 0; ix < f.length;ix++)
f[ix] = new ArrayList<String>();
Array.newInstance(ArrayList.class, size)
没有比 new ArrayList[size]
更好的优势。使用 Array.newInstance
和类字面量是没有任何意义的。 - newacct
ArrayList<ArrayList<MyClass>>
。 - Bobsnew ArrayList<MyClass>[2];
更改为new ArrayList[2];
,它将起作用,但您会收到警告。虽然我不建议这样做。 - Shahzeb