在將它們歸類為泛型時,對 Arraylists 和 Arrays 之間的區別感到非常困惑。在我的課程中,我們并沒有真正談論泛型編程,當他們解釋差異時,主要是關于一個如何成長而另一個不能成長。當我們說一個類是通用的時,這似乎并不是我認為真正的區別。谷歌搜索讓我更加困惑。
我看到的是“泛型型別是通過型別引數化的泛型類或介面。” 但是Java的陣列不允許引數化型別嗎?但只是以不同的形式撰寫?例如,陣列String[]型別Arraylist<String>對我來說類似于 arraylists 型別。非常感謝對此的簡單(高級)解釋。
uj5u.com熱心網友回復:
什么使
ArrayList泛型型別和陣列不在 Java 中?
ArrayList是一個類,并具有如下所示的宣告(您可以在此處找到):
public class ArrayList<E> // ...
注意“ <E>”。這宣告了一個名為 的型別引數E,這就是ArrayList泛型的原因。您還可以在 的API 參考中找到它ArrayList。
另一方面,陣列不是類或介面。它們不是通用的,因為只有類和介面可以是通用的。
JLS §4.3:
有四種參考型別:型別別(第 8.1 節)、介面型別(第 9.1 節)、型別變數(第 4.4 節)和陣列型別(第 10.1 節)。
JLS §8.1.2:
如果一個類宣告了一個或多個型別變數(第 4.4 節),它就是泛型的。
JLS §9.1.2:
如果介面宣告了一個或多個型別變數(第 4.4 節),則該介面是泛型的。
歷史旁注:泛型被添加到 Java 的時間比陣列晚得多,陣列從一開始就在 Java 中,所以也是如此。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/327302.html
