3 回答

TA貢獻1878條經驗 獲得超4個贊
泛型使集合更安全。
List<E>:E這里是Type Parameter,可以用來確定列表的內容類型,但是有No一種方法可以檢查期間的內容runtime。
Generics are checked only during compilation time.
<? extends String>:這是Java專門內置的,用于處理Type Parameter的問題。"? extends String"表示此列表可以具有
objects which IS-A String.
例如:
動物類狗類擴展動物老虎類擴展動物
因此, "public void go(ArrayList<Animal> a)"將“ NOT accept狗”或“老虎”作為其內容而不是“動物”。
"public void go(ArrayList<? extends Animal> a)" 需要做些什么 ArrayList take in Dog and Tiger type.
在Head First Java中檢查引用。

TA貢獻1799條經驗 獲得超8個贊
我通常會解釋< E >和< ?之間的區別。>通過與邏輯量化(即通用量化和存在量化)進行比較。
對應于“ forall E,...”
對應于“存在某物(用表示),使得...?!?/p>
因此,以下通用方法聲明意味著,對于所有類類型E,我們定義funct1
public static <E> void funct1 (List<E>; list1) {
}
以下通用方法聲明意味著,對于某些現有類,用< ?>,我們定義funct2。
public static void funct2(List<?> list) {
}
添加回答
舉報