java泛型通配符如何使用

 时间:2024-10-24 10:57:55

1、为了可以更好的演示案例效果,需要创建Person和Student两个类文件,Student继承Person类,并且使用idea开发工具生成对应的get和set以及toString方法

java泛型通配符如何使用java泛型通配符如何使用

2、Person[] persons = new Person[10];Person[] persons1 = new Student[10];编译通过,说明Student[]可以协变到Person[]List<Person> personList = new ArrayList<Person>();List<Person> personList1 = new ArrayList<Student>();//error第二个编译错误,说明List<Person>和List<Student>是两个不同的类型

java泛型通配符如何使用

3、为了解决这个问题,可以使用?通配符的方式,单独使用是无边界通配符,如图所示,首先传入List<Person>,编译和运行都没有问题

java泛型通配符如何使用java泛型通配符如何使用

4、在传入List<Student>类型,同样编译和运行都没有问题,说明print(List<?> list)可以传List<Person>和List<Student>两种类型,但print中不能对list进行编辑操作,只能读,尝试使用add方法编译错误

java泛型通配符如何使用java泛型通配符如何使用

5、固定上边界通配符,<? extends E>,如图所示,List<? extends Person>,只要是Person对象以及子类对象都可以传递进去,print方法内部可以直接作为Person对象类使用,但只能读,不能对list进行add操作

java泛型通配符如何使用

6、运行之后查看打印结果,说明结果和预料的一样

java泛型通配符如何使用

7、固定下边界通配符,<? superE>,如图所示,List<? super Student> list,只要是Student对象以及其父类对象类型的list都可以传递进去,这种方式不同于前面两种,使用下边界通配符可以对list进行add操作了,但不能get出具体的类型,只能是Object类型

java泛型通配符如何使用
  • 如何通过VBS文件控制家里的孩子过度玩游戏
  • 福迪雄师F16车辆仪表参数怎么看
  • 用榨汁机自制现磨豆浆
  • 玩转psutil 教你用Python检测U盘插入和拔出
  • 烟熏三文鱼沙拉的做法
  • 热门搜索
    q币可以充话费吗 兰州旅游攻略 cs75怎么样 聚利时手表怎么样 宝宝拉肚子可以吃什么 狼牙山旅游景点 巴厘岛旅游 秽翼的尤斯蒂娅攻略 可以换钱的棋牌 河北外国语学院怎么样