」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼 Java 中的陣列不能保存通用項?

為什麼 Java 中的陣列不能保存通用項?

發佈於2024-11-18
瀏覽:215

Why Can\'t Arrays Hold Generic Items in Java?

陣列可以儲存泛型項嗎?

泛型型別和陣列在 Java 中的互動方式不同。考慮以下程式碼:

ArrayList a = new ArrayList();

此程式碼編譯成功,建立一個名為 a 的通用 ArrayList。但是,下面的程式碼無法編譯通過:

ArrayList[] a = new ArrayList[10];

這是為什麼呢?看來數組和泛型是不相容的。為了理解這一點,讓我們探討一下 Java 中的類型擦除。

類型擦除:幕後花絮

當 Java 編譯時,它會執行類型擦除,它將泛型類型資訊替換為原始類型(物件)。這可以防止出現諸如將字串放入整數數組列表之類的錯誤。但是,陣列需要原始類型,而泛型不能表示為原始類型。

修復數組問題

要建立泛型項數組,您可以明確將數組轉換為所需的類型:

ArrayList[] a = (ArrayList[]) new ArrayList[10];

此轉換指示編譯器該陣列應視為具有關鍵元素的 ArrayList 陣列。

列表列表:例外

在 Java 中,列表列表不被視為數組。因此,以下程式碼無需類型轉換即可編譯:

ArrayList> b = new ArrayList>();

出現這種差異是因為ArrayList是非數組類型。

結論

由於類型擦除,數組和泛型類型在 Java 中存在限制。但是,透過將數組明確轉換為所需的泛型類型或使用列表列表,可以克服這些限制並在兩種上下文中有效地使用泛型類型。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3