欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java簡(jiǎn)明例舉講解泛型

 更新時(shí)間:2022年04月27日 09:18:07   作者:羨羨ˇ  
這篇文章主要介紹了Java的泛型,針對(duì)利用繼承來(lái)實(shí)現(xiàn)通用程序設(shè)計(jì)所產(chǎn)生的問(wèn)題,泛型提供了更好的解決方案,需要的朋友可以參考一下

什么是泛型

       早期的Object類型可以接收任意的對(duì)象類型,但是在實(shí)際的使用中, 會(huì)有類型轉(zhuǎn)換的問(wèn)題。也就存在這隱患,所以Java提供了泛型來(lái)解決這個(gè)安全問(wèn)題

      泛型,即“參數(shù)化類型”。一提到參數(shù),最熟悉的就是定義方法時(shí)有形參,然后調(diào)用此方法時(shí)傳

遞實(shí)參。就是說(shuō) , 我們可以將類型向參數(shù)一樣傳遞過(guò)去  

//一個(gè)泛型類
//T可以為任意字符,如A,a,B等都可以
public class Demo1<T> { 
    private T num;
    public Demo1() {}
    public Demo1(T num) {
        this.num = num;
    }
    public void setNum(T num) {
        this.num = num;
    }
    public static void main(String[] args) {
        Demo1<Integer> demo1 = new Demo1<>(101);
    }
}

      如上 , 實(shí)際傳入時(shí)需指明傳入的實(shí)際類型 , 此處為Integer(泛型不能為int等基本類型,只能為引用類型) , 如果不指明則默認(rèn)為object型

      當(dāng)然也可以定義多個(gè)泛型

public class Demo1<T,A> { } 

泛型類與接口派生子類

       此處我們定義一個(gè)Demo2類繼承上面的Demo1 類

可以看到 ,這樣顯然是不行的 , 那么此處有兩種解決辦法

1. 指明父類泛型的具體類型 ,如 : 

public class Demo2 extends Demo1<Integer>{
}

2. 子類也是泛型類, 如 :

public class Demo2<T> extends Demo1<T>{
}

子類也是泛型類,子類和父類的泛型類型要一致

子類不是泛型類,父類要明確泛型的數(shù)據(jù)類型

泛型接口與泛型類的定義及使用基本相同。

泛型通配符

相信很多人都見過(guò)這種寫法

 ? 是什么意思呢  , 接著我們來(lái)解釋

 ? 代表類型通配符 , 代表傳入實(shí)參時(shí) , 可以傳入為任意類型 

例如, 上述demo1 中 new對(duì)象也可以這樣寫 

Demo1<?> demo1 = new Demo1<>(101);

       ? 只能代表傳入的具體實(shí)參 , 類上面的是形參,所以?只能具體傳入時(shí)使用, ? 表示實(shí)際傳入的參數(shù)類型可以是任意的

類型通配符上限 :

 類/接口<?extends 實(shí)參類型>

// ? extends Number
public static void method(Demo1<? extends Number> demo1){
}
public static void main(String[] args) {
   method(new Demo1<Integer>());
}

       如上 , 我們?cè)趍ethod() 中傳入的參數(shù)是上述定義的Demo1類類型 ,  ? extends Number的意思就是說(shuō)我們實(shí)際傳入的類型上限是 Number , 也就是說(shuō), 只有Number 和 Number的子類(此處傳入為Integer , Number是Integer的父類)被實(shí)際傳入才是合法的

類型通配符下限 :

類/ 接口 < ? super 實(shí)參類型 >    

了解了上限 , 那么下限這里也就不難理解了 , 就是傳入的必須是 自己或者自己的父類

public static void method1(Demo1<? super Number> demo1){
}
public static void main(String[] args) {
    method1(new Demo1<Object>());
}

此處必須傳入Number 或者 Number的父類 (此處傳入為Object類)

類型擦除

        泛型是Java 1.5版本才引進(jìn)的概念,在這之前是沒(méi)有泛型的,但是,泛型代碼能夠很 好地和之前版本的代碼兼容。那是因?yàn)?,泛到信息只存在于代碼編譯階段,在進(jìn)入JVM之前,與泛型相關(guān)的信息會(huì)被擦除掉,我們稱之為一類型擦除. 泛型類被類型擦除后,相應(yīng)的類型就被替換成 Object 類型或者上限類型.

       就是說(shuō) , 泛型只存在于編譯期期間 , 真正執(zhí)行代碼的時(shí)候 , 是沒(méi)有泛型這個(gè)概念的, 它只是在編譯期對(duì)我們傳入的類型做了約束

到此這篇關(guān)于java簡(jiǎn)明例舉講解泛型的文章就介紹到這了,更多相關(guān)java泛型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)AOP功能的封裝與配置的小框架實(shí)例代碼

    Java實(shí)現(xiàn)AOP功能的封裝與配置的小框架實(shí)例代碼

    這篇文章主要介紹了Java實(shí)現(xiàn)AOP功能的封裝與配置的小框架實(shí)例代碼,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 解決spring @ControllerAdvice處理異常無(wú)法正確匹配自定義異常

    解決spring @ControllerAdvice處理異常無(wú)法正確匹配自定義異常

    這篇文章主要介紹了解決spring @ControllerAdvice處理異常無(wú)法正確匹配自定義異常的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中new Date().getTime()指定時(shí)區(qū)的時(shí)間戳問(wèn)題小結(jié)

    Java中new Date().getTime()指定時(shí)區(qū)的時(shí)間戳問(wèn)題小結(jié)

    本文主要介紹了Java中new Date().getTime()時(shí)間戳問(wèn)題小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • java中jdbcTemplate的queryForList(坑)

    java中jdbcTemplate的queryForList(坑)

    本文主要介紹了java中jdbcTemplate的queryForList,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • JAVA提高第十篇 ArrayList深入分析

    JAVA提高第十篇 ArrayList深入分析

    這篇文章主要深入分析了JAVA提高第十篇ArrayList的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 淺談Java三目運(yùn)算

    淺談Java三目運(yùn)算

    本文給大家主要介紹的是java中三目運(yùn)算的詳細(xì)介紹,并附上2個(gè)示例,希望對(duì)大家理解三目運(yùn)算能夠有所幫助。
    2015-03-03
  • SpringData @Query和@Modifying注解原理解析

    SpringData @Query和@Modifying注解原理解析

    這篇文章主要介紹了SpringData @Query和@Modifying注解原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java實(shí)現(xiàn)多線程大批量同步數(shù)據(jù)(分頁(yè))

    Java實(shí)現(xiàn)多線程大批量同步數(shù)據(jù)(分頁(yè))

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)多線程大批量同步數(shù)據(jù)(分頁(yè)),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Java順時(shí)針打印矩陣

    Java順時(shí)針打印矩陣

    這篇文章主要為大家詳細(xì)介紹了Java順時(shí)針打印矩陣,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • java累加和校驗(yàn)實(shí)現(xiàn)方式16進(jìn)制(推薦)

    java累加和校驗(yàn)實(shí)現(xiàn)方式16進(jìn)制(推薦)

    下面小編就為大家?guī)?lái)一篇java累加和校驗(yàn)實(shí)現(xiàn)方式16進(jìn)制(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11

最新評(píng)論