2013-04-03 27 views
4

假設我有FooClass類。類型無法創建列表的通用數組<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> ... 

希望得到任何幫助。

回答

7

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. 用List實例填充該數組

例子:

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

@Downvoter,請發表評論 – bsiamionau

+0

非常感謝您的快速回復我更新了Q ...請你再看一下。 – user1172468

+1

我不是倒票選者,但我認爲OP要求創建一系列列表而不是單個列表。 –

2

這不是混合泛型和數組好主意。泛型不會在運行時保留類型信息,因此創建泛型數組失敗。

+0

mmmm我想這可能是 – user1172468

1

列表不應該聲明爲數組。它應該是:

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

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

編輯:你可以嘗試List<ConfigParser> runs[] = new List[4];。但爲什麼你需要列表的數組?

此外,@ rai.skumar提到,由於類型擦除,通用信息在運行時不會保留。

+0

嗨@rajesh,我其實想創建一個FooClass的列表數組。 – user1172468

+1

我有一個特殊的用例,我有4個列表,需要處理 – user1172468

+0

哇。嗯,如果你更新你的答案我會接受它。 – user1172468

相關問題