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

java簡明例舉講解泛型

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

什么是泛型

       早期的Object類型可以接收任意的對象類型,但是在實際的使用中, 會有類型轉換的問題。也就存在這隱患,所以Java提供了泛型來解決這個安全問題

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

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

//一個泛型類
//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);
    }
}

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

      當然也可以定義多個泛型

public class Demo1<T,A> { } 

泛型類與接口派生子類

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

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

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

public class Demo2 extends Demo1<Integer>{
}

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

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

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

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

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

泛型通配符

相信很多人都見過這種寫法

 ? 是什么意思呢  , 接著我們來解釋

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

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

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

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

類型通配符上限 :

 類/接口<?extends 實參類型>

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

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

類型通配符下限 :

類/ 接口 < ? super 實參類型 >    

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

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

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

類型擦除

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

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

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

相關文章

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

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

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

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

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

    Java中new Date().getTime()指定時區(qū)的時間戳問題小結

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

    java中jdbcTemplate的queryForList(坑)

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

    JAVA提高第十篇 ArrayList深入分析

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

    淺談Java三目運算

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

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

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

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

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

    Java順時針打印矩陣

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

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

    下面小編就為大家?guī)硪黄猨ava累加和校驗實現(xiàn)方式16進制(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11

最新評論