2012-03-14 81 views
2

可能重複:
Generic array creation errorJava中的條目<K,V>數組如何工作?

我正在與一個Entry數組交易的轉讓。我想出瞭如何創建它,但我不完全理解它是如何工作的。爲什麼在創建新的Entry數組時,我不需要指定K,V類型?如果你們能夠提供一些關於它如何運作的見解,我將不勝感激。

private Entry<K,V>[] data; 


data = new Entry[4096]; 
+0

你的程序中是K和V類型還是類型變量? – Jochen 2012-03-14 17:01:28

+0

它們是類型,K表示鍵,V表示值。 – kubiej21 2012-03-14 17:03:45

回答

3

當您使用new Entry[4096]數組你只是創建4096名的引用,編譯器不會在這一點上,他們是因爲將通過類型擦除拆下來Entry<K,V>引用在意。請記住,java中的泛型只是基礎類格式的合成糖。在運行時,泛型不存在。

0

哪部分你不明白? Entry<K,V>是使用K和V進行參數化的泛型類型。您還可以使用Entry,這是沒有泛型的原始類型(用於向後兼容)。類型擦除後它們是相同的。同樣,您可以有Entry<K,V>[]Entry[]。它們可以在彼此之間進行轉換,但它將是一個未經檢查的轉換。

其實不能在數組創建的組件類型中指定了具體的參數。您必須執行new Entry[4096]new Entry<?,?>[4096]。所以未經檢查的轉換是不可避免的。