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

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

 更新時間:2023年12月18日 10:00:45   作者:暴躁的程序猿啊  
這篇文章主要介紹了Java的List集合中泛型使用詳解,泛型類,如果沒有指定具體的數(shù)據(jù)類型,此時,操作類型是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;
        //此時list1和list2不具有子父類關(guān)系
        list1=list2;
    }

在這里插入圖片描述

在這里插入圖片描述

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

 //但是這種情況是可以的  泛型相同 多態(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泛型使用通配符 ?

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

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

但是我們使用add、get方法時

  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);
    }

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

在這里插入圖片描述

但是有一個特例 添加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)建兩個類演示

/**
 * @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;
    }

可以看到報錯了

在這里插入圖片描述

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

  • ? 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)文章

最新評論