泛型的好處:
類型安全。 泛型的主要目標(biāo)是提高 Java 程序的類型安全。通過知道使用泛型定義的變量的類型限制,編譯器可以在一個高得多的程度上驗證類型假設(shè)。沒有泛型,編譯器可能正常編譯但運行時會報錯。例如Object類的向下轉(zhuǎn)型。
消除強(qiáng)制類型轉(zhuǎn)換。 泛型的一個附帶好處是,消除源代碼中的許多強(qiáng)制類型轉(zhuǎn)換。這使得代碼更加可讀,并且減少了出錯機(jī)會。
泛型擦除:
編譯器在編譯期,將泛型轉(zhuǎn)化為原生類型。并在相應(yīng)的地方插入了強(qiáng)制轉(zhuǎn)型的代碼
## 編譯前
public class GenericErasure {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("hj", "fds");
System.out.println(map.get("hj"));
}
}
##編譯后
public class GenericErasure {
public GenericErasure() {
}
public static void main(String[] args) {
Map<String, String> map = new HashMap();
map.put("hj", "fds");
System.out.println((String)map.get("hj"));
}
}
T 只有extends一種限定方式,<T extends List>是合法的,<T super List>是不合法的
?有extends與super兩種限定方式,即<? extends List> 與<? super List>都是合法的
T 用于泛型類和泛型方法的定義。?用于泛型方法的調(diào)用和形參,即下面的用法是不合法的:
public class Generic1<? extends List<String> {
public <? extends List> void test(String t) {
}
}