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

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

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

list泛型類(lèi)型

我們來(lái)看一段代碼

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

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

 public void test(){
        List<Object> list1=null;
        List<String> list2=null;
        //此時(shí)list1和list2不具有子父類(lèi)關(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;
        //對(duì)于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;
        //對(duì)于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è)類(lèi)演示

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

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

   public void Extent() {
        //必須賦值小于等于的類(lèi)型
        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的類(lèi)型
  • ? super Person 必須賦值大于等于person的類(lèi)型

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

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

相關(guān)文章

最新評(píng)論