2011-09-08 71 views
-1

可能重複:
Java generics and array initialization
How does one instantiate an array of maps in Java?問題地圖陣列泛型

我知道我可以做:

Map<String, Object> map = new HashMap<String, Object>(); 

,所以我應該能夠:

Map<String, Object>[] maps = new HashMap<String, Object>[10]; 

但這不起作用,給編譯問題。

+1

想知道,爲什麼不使用'List'而不是老式的數組?順便問過很多次這個問題。可能有一些在右欄的*相關*部分。 – BalusC

回答

5

這是java中的泛型的怪癖。你必須聲明數組,像這樣:

HashMap<String, Object>[] maps = new HashMap[10]; 

後,你可以親手創建的每個地圖,例如:

for(int i=0;i<10;i++) 
{ 
    maps[i] = new HashMap<String,Object>(); 
} 

這是erasure的結果。該陣列是一個數組HashMap s。泛型類型參數不保留。你會得到一個關於這個的警告,但它會編譯,你可以用@SuppressWarning("unchecked")註釋來壓制警告。