如何初始化泛型数组?

3

我想要一个ArrayList数组:

ArrayList<MyClass>[] myArray;

我希望通过以下代码来进行初始化:

myArray = new ArrayList<MyClass>[2];

但是我遇到了这个错误:
Cannot create a generic array of ArrayList<MyClass>

我该如何初始化它?

创建一个ArrayList<String>元素的数组 - Shahzeb
我不能有ArrayList<ArrayList<MyClass>> - Bobs
当您在该页面上时,如果按下箭头,您会注意到页面移动并出现其他答案。话虽如此,选择更多的是您可以而不是您想要的。无论如何,如果您将new ArrayList<MyClass>[2];更改为new ArrayList[2];,它将起作用,但您会收到警告。虽然我不建议这样做。 - Shahzeb
4个回答

4

在Java中,严格来说这是不可能的,自从它被实现以来就一直如此。

你可以像这样解决它:

ArrayList<MyClass>[] lists = (ArrayList<MyClass>[])new ArrayList[2];

这可能会(实际上,应该会)生成一个警告,但是没有其他的方法可以解决它。老实说,你最好创建一个ArrayListArrayList

ArrayList<ArrayList<MyClass>> lists = new ArrayList<ArrayList<MyClass>>(2);

我建议采用后者。

通常情况下,应避免混合使用泛型和数组。处理泛型时,建议使用List<E>而不是数组。 - Louis Wasserman

0

你可以使用

HashMap<some key,ArrayList<MyClass>> or ArrayList<ArrayList<MyClass>>

0

由于数组在编译时是静态的,所以您无法这样做,而应该使用ArrayList。

ArrayList<ArrayList<MyClass>>

0

这个怎么样?

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接