java泛型及泛型擦除

泛型的好處:

類型安全。 泛型的主要目標(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) {
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容