我正在與一個Entry數組交易的轉讓。我想出瞭如何創建它,但我不完全理解它是如何工作的。爲什麼在創建新的Entry數組時,我不需要指定K,V類型?如果你們能夠提供一些關於它如何運作的見解,我將不勝感激。
private Entry<K,V>[] data;
data = new Entry[4096];
我正在與一個Entry數組交易的轉讓。我想出瞭如何創建它,但我不完全理解它是如何工作的。爲什麼在創建新的Entry數組時,我不需要指定K,V類型?如果你們能夠提供一些關於它如何運作的見解,我將不勝感激。
private Entry<K,V>[] data;
data = new Entry[4096];
當您使用new Entry[4096]
數組你只是創建4096名的引用,編譯器不會在這一點上,他們是因爲將通過類型擦除拆下來Entry<K,V>
引用在意。請記住,java中的泛型只是基礎類格式的合成糖。在運行時,泛型不存在。
哪部分你不明白? Entry<K,V>
是使用K和V進行參數化的泛型類型。您還可以使用Entry
,這是沒有泛型的原始類型(用於向後兼容)。類型擦除後它們是相同的。同樣,您可以有Entry<K,V>[]
和Entry[]
。它們可以在彼此之間進行轉換,但它將是一個未經檢查的轉換。
其實不能在數組創建的組件類型中指定了具體的參數。您必須執行new Entry[4096]
或new Entry<?,?>[4096]
。所以未經檢查的轉換是不可避免的。
你的程序中是K和V類型還是類型變量? – Jochen 2012-03-14 17:01:28
它們是類型,K表示鍵,V表示值。 – kubiej21 2012-03-14 17:03:45