2014-04-07 85 views
0

我已閱讀What's the reason I can't create generic array types in Java?。我來到了,當我嘗試這種代碼:Array with泛型

HashMap<String, String>[] ret = new HashMap<String, String>[arraySize]; 

我決定「GET WILD」,並嘗試別的東西

ArrayList<HashMap<String, String>> ret = new ArrayList<HashMap<String, String>>(); 

現在,我不明白的是,爲什麼第一個選項是壞/不支持,第二個選項編譯。

我錯過了什麼?在第一種方法中,我得到一個錯誤,無法編譯,而第二種方法沒有編譯器問題。

我更喜歡遵循智能編程原則,但不瞭解這種特殊情況下的差異。

+1

'ArrayList'不是一個數組。或者更好的是,一個隨機的泛型類型不是一個數組(忘記它被稱爲'ArrayList',它只是另一種類型)。 –

+0

ty,但它確實允許我擁有這些對象的數組本身。也許這是我困惑的地方? –

+1

如果需要,您可以查看底層的實現。 'ArrayList'使用'Object []'。 –

回答

1

指出你已經知道的,第二個編譯。 ArrayList不是一個數組,所以你的程序顯然不會遇到通用數組問題。

你可能想知道ArrayList是如何做到的。在我看到的ArrayList的實現中,它在內部使用了一個Object數組 - 不是通用的。該課只是做了很多鑄造。