亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java?泛型的上界和下界通配符示例詳解

 更新時(shí)間:2023年04月04日 13:31:01   作者:GeekTR  
這篇文章主要為大家通過示例介紹了Java?泛型的上界和下界通配符,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

介紹

Java中的泛型是一種強(qiáng)類型的機(jī)制,允許我們在編譯時(shí)檢查類型的安全性,以避免在運(yùn)行時(shí)出現(xiàn)類型轉(zhuǎn)換異常。泛型的上界和下界用于限制泛型類型參數(shù)的范圍,本文將會詳細(xì)介紹它們的概念和用法。

上界

泛型的上界指定了類型參數(shù)必須是某個(gè)類的子類或者實(shí)現(xiàn)了某個(gè)接口。它的語法形式為 T extends B,其中T是泛型類型參數(shù),B是上界類型。例如,下面的代碼展示了一個(gè)泛型類 Box,它的類型參數(shù)T必須是 Number 或其子類:

public class Box<T extends Number> {
    private T value;
    public Box(T value) {
        this.value = value;
    }
    public T getValue() {
        return value;
    }
}

在上面的代碼中,我們使用了 extends 關(guān)鍵字來指定泛型類型參數(shù)的上界類型,這意味著泛型類型參數(shù)必須是 Number 或其子類。這樣,我們就可以使用 Box 類來存儲 Integer、Double、Float 等類型的值,因?yàn)樗鼈兌际?Number 的子類。另外,通過使用泛型的上界,我們可以確保 Box 類的實(shí)例中只存儲 Number 類型的值,避免了類型轉(zhuǎn)換異常的風(fēng)險(xiǎn)。

在使用泛型的時(shí)候,如果我們傳入一個(gè)類型不符合上界限制的參數(shù),則會在編譯時(shí)發(fā)生錯(cuò)誤,例如:

Box<String> box = new Box<>("Hello World");    // 編譯錯(cuò)誤:String 不是 Number 的子類

下界

泛型的下界指定了類型參數(shù)必須是某個(gè)類的超類或者是某個(gè)接口的實(shí)現(xiàn)類。它的語法形式為 T super B,其中T是泛型類型參數(shù),B是下界類型。下面是一個(gè)示例,展示了一個(gè)泛型類 Box,它的類型參數(shù)T必須是 Object 或其超類:

public class Box<T super Object> {
    private T value;
    public Box(T value) {
        this.value = value;
    }
    public T getValue() {
        return value;
    }
}

在上面的代碼中,我們使用了 super 關(guān)鍵字來指定泛型類型參數(shù)的下界類型,這意味著泛型類型參數(shù)必須是 Object 或其超類。這樣,我們就可以使用 Box 類來存儲 Object、String、IntegerDouble 等類型的值,因?yàn)樗鼈兌际?Object 的子類。另外,通過使用泛型的下界,我們可以確保 Box 類的實(shí)例中存儲的值都是 Object 類型,避免了類型轉(zhuǎn)換異常的風(fēng)險(xiǎn)。

在使用泛型的時(shí)候,如果我們傳入一個(gè)類型不符合下界限制的參數(shù),則會在編譯時(shí)發(fā)生錯(cuò)誤,例如:

Box<Integer> box = new Box<>(123);    // 編譯錯(cuò)誤:Integer 不是 Object 的超類

上下界通配符

有時(shí)候,我們需要在泛型中同時(shí)使用上界和下界的限制,此時(shí)可以使用通配符 ? 來表示未知類型。例如,下面的代碼展示了一個(gè)泛型方法 copy,它可以將一個(gè)數(shù)組的元素復(fù)制到另一個(gè)數(shù)組中:

public static <T> void copy(List<? extends T> src, List<? super T> dest) {
    for (T t : src) {
        dest.add(t);
    }
}

在上面的代碼中,我們使用了通配符 ? 來表示未知類型,它可以同時(shí)滿足 src 參數(shù)是 T 類型或其子類,dest 參數(shù)是 T 類型或其超類的限制條件。這樣,我們就可以將任意類型的元素復(fù)制到另一個(gè)列表中了。通過使用上下界通配符,我們可以更加靈活地定義泛型方法,同時(shí)保證類型安全。

總結(jié)

Java中的泛型是一種強(qiáng)類型的機(jī)制,它能夠在編譯時(shí)檢查類型的安全性。泛型的上界和下界用于限制類型參數(shù)的范圍,它們可以讓我們更精確地控制類型的使用。在使用泛型時(shí),我們需要根據(jù)實(shí)際需求選擇合適的上下界限制,以保證程序的正確性和可靠性。

除了上下界限制外,還可以使用通配符 ? 來表示未知類型,從而更加靈活地定義泛型類和方法。因此,學(xué)習(xí)和掌握泛型機(jī)制對于Java開發(fā)人員來說是非常重要的。

以上就是Java 泛型的上界和下界的詳細(xì)內(nèi)容,更多關(guān)于Java 泛型的上界和下界的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一文精通Java中的volatile關(guān)鍵字

    一文精通Java中的volatile關(guān)鍵字

    volatile是java中的關(guān)鍵詞之一,這篇文章主要給大家介紹了關(guān)于Java中volatile關(guān)鍵字的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • idea中導(dǎo)入別人的springboot項(xiàng)目的方法(圖文)

    idea中導(dǎo)入別人的springboot項(xiàng)目的方法(圖文)

    這篇文章主要介紹了idea中導(dǎo)入別人的springboot項(xiàng)目的方法(圖文),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java 7大常見排序方法實(shí)例詳解

    Java 7大常見排序方法實(shí)例詳解

    這篇文章主要通過實(shí)例介紹了Java中常用的7種排序方法,需要的朋友可以參考下
    2017-04-04
  • Spring事務(wù)的傳播行為解析

    Spring事務(wù)的傳播行為解析

    這篇文章主要介紹了Spring事務(wù)的傳播行為解析,事務(wù)傳播行為(propagation?behavior)指的就是當(dāng)一個(gè)事務(wù)方法被另一個(gè)事務(wù)方法調(diào)用時(shí),這個(gè)事務(wù)方法應(yīng)該如何運(yùn)行,需要的朋友可以參考下
    2023-10-10
  • iOS多線程介紹

    iOS多線程介紹

    這篇文章主要介紹了iOS多線程的相關(guān)知識,涉及到對進(jìn)程,線程等方面的知識講解,本文非常具有參考價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • IDEA中java斷言assert語法及使用

    IDEA中java斷言assert語法及使用

    這篇文章主要介紹了IDEA中java斷言assert語法詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Java注解處理器簡單實(shí)例

    Java注解處理器簡單實(shí)例

    這篇文章主要介紹了Java注解處理器簡單實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • java設(shè)計(jì)模式--橋接模式詳解

    java設(shè)計(jì)模式--橋接模式詳解

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式之橋接模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-07-07
  • Java實(shí)現(xiàn)隊(duì)列的三種方法集合

    Java實(shí)現(xiàn)隊(duì)列的三種方法集合

    這篇文章主要介紹了Java實(shí)現(xiàn)隊(duì)列的三種方法集合,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Spring Boot解決項(xiàng)目啟動(dòng)時(shí)初始化資源的方法

    Spring Boot解決項(xiàng)目啟動(dòng)時(shí)初始化資源的方法

    這篇文章主要給大家介紹了關(guān)于Spring Boot如何解決項(xiàng)目啟動(dòng)時(shí)初始化資源的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05

最新評論