8

假设我有类 FooClass。

public class FooClass {
}

以下行给了我以下编译错误:

// Note I want to create an array of length 4 of Lists of FooClass
List<FooClass> runs[]=new List<FooClass>[4];
Cannot create a generic array of List<FooClass> ...

将不胜感激任何帮助。

4

3 回答 3

7

列表集合与数组不同:

// if you want create a List of FooClass (you can use any List implementation)
List<FooClass> runs = new ArrayList<FooClass>();

// if you want create array of FooClass
FooClass[] runs = new FooClass[4];

升级版:

如果要创建列表数组,您应该:

  1. 创建数组
  2. 用 List 实例填充这个数组

例子:

List<FooClass>[] runs = new List[4];
for (int i = 0; i < runs.length; i++) {
    runs[i] = new ArrayList<>();
}
于 2013-04-03T06:52:12.990 回答
4

混合泛型和数组并不是一个好主意。泛型在运行时不保留类型信息,因此创建泛型数组失败。

于 2013-04-03T06:52:31.820 回答
0

列表不应声明为数组。它应该是:

List<FooClass> runs=new ArrayList<FooClass>(4);

或者

List<FooClass> runs=new ArrayList<FooClass>();

编辑:你可以试试List<ConfigParser> runs[] = new List[4];。但是为什么你需要列表数组呢?

同样正如@rai.skumar 所提到的,由于类型擦除,通用信息在运行时不会保留。

于 2013-04-03T06:52:50.540 回答