2025年java基础 泛型和list集合

java基础 泛型和list集合目录 list 泛型类型 List 泛型使用通配符 List 泛型使用 list 泛型类型 我们来看一段代码 public void test Object o null String str1 null 多态表现 父类的引用接收子类的对象 o str1 但是下面这样的代码是不能赋值的 public void test List lt

大家好,我是讯享网,很高兴认识大家。



list泛型类型

我们来看一段代码

 public void test(){ Object o=null; String str1=null; //多态表现 父类的引用接收子类的对象 o=str1; }
讯享网

但是下面这样的代码是不能赋值的

讯享网 public void test(){ List<Object> java基础 泛型和list集合 list1=null; List<String> list2=null; //此时list1和list2不具有子父类关系 list1=list2; }

在这里插入图片描述

在这里插入图片描述

我们可以看到 需要的是Object 传的是一个String 这种情况我们使用时候是需要注意的 但是有一种情况是可以的

 //但是这种情况是可以的 泛型相同 多态的表现 List<String> list3=null; ArrayList<String> list4=null; list3=list4; //相当于 这样 List<String> list5=new ArrayList<String>();

这样是可以的相当于 多态的表现

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<?>就不能向其内部添加数据 //但是不可以添加数据 除了添加 null list.add("1"); //可以读取数据 list.get(0); }

可以看到是有错误的 不能添加数据

在这里插入图片描述

但是有一个特例 添加null是可以添加的

 public void List1() { List<String> list1 = new ArrayList<>(); List<?> list=new ArrayList<>(); list1.add("111"); //这样赋值是可以的 list=list1; //对于List<?>就不能向其内部添加数据 //但是不可以添加数据 除了添加 null list.add("1"); //null可以 list.add(null); //可以读取数据 list.get(0); }

在这里插入图片描述

List泛型使用

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

创建两个类演示

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

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

我们创建集合使用泛型赋值测试

 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的要求

小讯
上一篇 2025-01-02 16:25
下一篇 2024-12-26 20:39

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/1084.html