3 回答

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

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