最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java的List集合中泛型使用詳解

 更新時(shí)間:2023年12月18日 10:00:45   作者:暴躁的程序猿啊  
這篇文章主要介紹了Java的List集合中泛型使用詳解,泛型類,如果沒有指定具體的數(shù)據(jù)類型,此時(shí),操作類型是Object,泛型的類型參數(shù)只能是類類型,不能是基本數(shù)據(jù)類型,需要的朋友可以參考下

list泛型類型

我們來看一段代碼

 public void test(){
        Object o=null;
        String str1=null;
        //多態(tài)表現(xiàn)   父類的引用接收子類的對象
        o=str1;
    }

但是下面這樣的代碼是不能賦值的

 public void test(){
        List<Object> list1=null;
        List<String> list2=null;
        //此時(shí)list1和list2不具有子父類關(guān)系
        list1=list2;
    }

在這里插入圖片描述

在這里插入圖片描述

我們可以看到 需要的是Object 傳的是一個(gè)String 這種情況我們使用時(shí)候是需要注意的 但是有一種情況是可以的

 //但是這種情況是可以的  泛型相同 多態(tài)的表現(xiàn)
        List<String> list3=null;
        ArrayList<String> list4=null;
        list3=list4;
        //相當(dāng)于 這樣
        List<String> list5=new ArrayList<String>();

這樣是可以的相當(dāng)于 多態(tài)的表現(xiàn)

List泛型使用通配符 ?

我們使用?通配符的時(shí)候 這樣賦值可以

  public void List1() {
        List<String> list1 = new ArrayList<>();
        List<?> list=new ArrayList<>();
        list1.add("111");
        //這樣賦值是可以的
        list=list1;
    }

但是我們使用add、get方法時(shí)

  public void List1() {
        List<String> list1 = new ArrayList<>();
        List<?> list=new ArrayList<>();
        list1.add("111");
        //這樣賦值是可以的
        list=list1;
        //對于List<?>就不能向其內(nèi)部添加數(shù)據(jù)
        //但是不可以添加數(shù)據(jù)  除了添加  null
        list.add("1");
        //可以讀取數(shù)據(jù)
        list.get(0);
    }

可以看到是有錯(cuò)誤的 不能添加數(shù)據(jù)

在這里插入圖片描述

但是有一個(gè)特例 添加null是可以添加的

 public void List1() {
        List<String> list1 = new ArrayList<>();
        List<?> list=new ArrayList<>();
        list1.add("111");
        //這樣賦值是可以的
        list=list1;
        //對于List<?>就不能向其內(nèi)部添加數(shù)據(jù)
        //但是不可以添加數(shù)據(jù)  除了添加  null
        list.add("1");
        //null可以
        list.add(null);
        //可以讀取數(shù)據(jù)
        list.get(0);
    }

在這里插入圖片描述

List泛型使用

有限制條件的通配符的使用 ? extents Person ? super Person

創(chuàng)建兩個(gè)類演示

/**
 * @create: 2021/10/2
 * @author: Tony Stark
 */
public class Person {
}
/**
 * @create: 2021/10/2
 * @author: Tony Stark
 */
public class Student extends Person {
}

我們創(chuàng)建集合使用泛型賦值測試

   public void Extent() {
        //必須賦值小于等于的類型
        List<? extends Person> list1 = null;
        //必須賦值大于等于
        List<? super Person> list2 = null;
        List<Student> list3 = null;
        List<Person> list4 = null;
        List<Object> list5=null;
        list1=list3;
        list1=list4;
        list1=list5;
        list2=list3;
        list2=list4;
        list2=list5;
    }

可以看到報(bào)錯(cuò)了

在這里插入圖片描述

這里就要介紹一下范圍的要求

  • ? extents Person 必須賦值小于等于person的類型
  • ? super Person 必須賦值大于等于person的類型

很明顯我們上面list5是object類型大于了我們的list1要求小于等于persion 同理 list3是student不滿足list2大于等于person的要求

到此這篇關(guān)于Java的List集合中泛型使用詳解的文章就介紹到這了,更多相關(guān)List集合泛型詳解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java動態(tài)代理之?dāng)r截器的應(yīng)用

    Java動態(tài)代理之?dāng)r截器的應(yīng)用

    今天小編就為大家分享一篇關(guān)于Java動態(tài)代理之?dāng)r截器的應(yīng)用,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Spring?Cloud?Hystrix?服務(wù)降級限流策略詳解

    Spring?Cloud?Hystrix?服務(wù)降級限流策略詳解

    這篇文章主要為大家介紹了Spring?Cloud?Hystrix?服務(wù)降級限流策略詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 關(guān)于Hystrix的監(jiān)控及可視化面板

    關(guān)于Hystrix的監(jiān)控及可視化面板

    這篇文章主要介紹了關(guān)于Hystrix的監(jiān)控及可視化面板,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • redis與ssm整合方法(mybatis二級緩存)

    redis與ssm整合方法(mybatis二級緩存)

    本文給大家介紹redis與ssm整合方法(mybatis二級緩存)。主要是利用redis去做mybatis的二級緩存,mybaits映射文件中所有的select都會刷新已有緩存,如果不存在就會新建緩存,所有的insert,update操作都會更新緩存
    2017-12-12
  • springboot動態(tài)調(diào)整日志級別的操作大全

    springboot動態(tài)調(diào)整日志級別的操作大全

    這篇文章主要介紹了springboot動態(tài)調(diào)整日志級別的方法,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Java實(shí)現(xiàn)Excel與HTML互轉(zhuǎn)

    Java實(shí)現(xiàn)Excel與HTML互轉(zhuǎn)

    Excel是一種電子表格格式,而HTM則是一種用于創(chuàng)建網(wǎng)頁的標(biāo)記語言,雖然兩者在用途上存在差異,但有時(shí)我們需要將數(shù)據(jù)從一種格式轉(zhuǎn)換為另一種格式,下面我們就來看看具體實(shí)現(xiàn)方法吧
    2025-01-01
  • Java鎖升級機(jī)制超詳細(xì)講解(附實(shí)例代碼)

    Java鎖升級機(jī)制超詳細(xì)講解(附實(shí)例代碼)

    Java中的synchronized鎖會經(jīng)歷一個(gè)從無鎖到偏向鎖,再到輕量級鎖,最后到重量級鎖的升級過程,這種優(yōu)化稱為鎖升級或鎖膨脹,這篇文章主要介紹了Java鎖升級機(jī)制超詳細(xì)講解的相關(guān)資料,需要的朋友可以參考下
    2025-06-06
  • JAVA編程實(shí)現(xiàn)隨機(jī)生成指定長度的密碼功能【大小寫和數(shù)字組合】

    JAVA編程實(shí)現(xiàn)隨機(jī)生成指定長度的密碼功能【大小寫和數(shù)字組合】

    這篇文章主要介紹了JAVA編程實(shí)現(xiàn)隨機(jī)生成指定長度的密碼功能,可生成帶有大小寫和數(shù)字組合的隨機(jī)字符串,需要的朋友可以參考下
    2017-07-07
  • Java?數(shù)據(jù)結(jié)構(gòu)與算法系列精講之漢諾塔

    Java?數(shù)據(jù)結(jié)構(gòu)與算法系列精講之漢諾塔

    漢諾塔是源于印度一個(gè)古老傳說的益智玩具。大梵天創(chuàng)造世界時(shí)做了三根石柱,在一根柱子上從下往上按大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規(guī)定,在小圓盤上不能放大圓盤,三根柱子之間一次只能移動一個(gè)圓盤
    2022-02-02
  • 使用SpringBoot發(fā)送郵箱驗(yàn)證碼的簡單實(shí)現(xiàn)

    使用SpringBoot發(fā)送郵箱驗(yàn)證碼的簡單實(shí)現(xiàn)

    這篇文章主要介紹了使用SpringBoot發(fā)送郵箱驗(yàn)證碼的簡單實(shí)現(xiàn),咱們今天來講使用QQ郵箱來發(fā)送和接收驗(yàn)證碼,首先來介紹一下它在SpringBoot項(xiàng)目中的具體應(yīng)用,需要的朋友可以參考下
    2023-04-04

最新評論

龙游县| 邵武市| 留坝县| 辽中县| 沐川县| 西乡县| 招远市| 冷水江市| 莱西市| 鱼台县| 大荔县| 木里| 抚顺市| 凤阳县| 榆树市| 讷河市| 霍林郭勒市| 定西市| 根河市| 昭苏县| 营口市| 灵寿县| 库尔勒市| 安吉县| 瑞金市| 宜丰县| 长岭县| 图木舒克市| 汉寿县| 江川县| 武陟县| 永城市| 武邑县| 富顺县| 望江县| 巴马| 万源市| 镇赉县| 丹寨县| 安义县| 墨玉县|