类型无法创建List <fooclass> </fooclass>的通用数组

时间:2013-04-03 06:50:23

标签: java list collections

假设我有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> ...

感谢任何帮助。

3 个答案:

答案 0 :(得分:6)

List集合与array不同:

// 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];

<强> UPD:

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

  1. 创建数组
  2. 使用列表实例填充此数组
  3. 示例:

    List<FooClass>[] runs = new List[4];
    for (int i = 0; i < runs.length; i++) {
        runs[i] = new ArrayList<>();
    }
    

答案 1 :(得分:2)

将Generics和Array混合起来并不是一个好主意。泛型不会在运行时保留类型信息,因此创建一系列泛型失败。

答案 2 :(得分:0)

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

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

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

修改:您可以尝试List<ConfigParser> runs[] = new List[4];。但为什么你需要一系列的列表?

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