泛型的通配符有哪些?

只能用于声明变量|形参上,一般是形参类型上,表示可以接收任意
 不能用在

1、创建对象,即new 后面
2、声明泛型类、泛型接口,即class和interface
3、声明泛型方法,即返回值类型前面<>中
匹配任意类型的通配符
在这里插入图片描述
受限泛型:上限、下限
(1)通配符指定上限
上限extends:使用时指定的类型必须是继承某个类,或者实现某个接口,即<= ,如
? extends Person
? extends Comparable
满足以下规则
List 满足 List<? extends Fruit>
List 满足 List<? extends Fruit>
List 满足 List<? extends Fruit>
List<? extends Apple> 满足 List<? extends Fruit>
List<?> 不满足 List<? extends Fruit> 因为List<?> 等价于List<? extends Object>
在这里插入图片描述
如果使用“? extends 类型”接收泛型对象的时候,则不能设置被泛型指定的内容
在这里插入图片描述
(2)通配符指定下限
下限super:使用时指定的类型不能小于操作的类,即>=,如
? super Apple
存在以下规则:
ArrayList 满足 ArrayList<? super Apple>
ArrayList 满足 ArrayList<? super Apple>
ArrayList 满足 ArrayList<? super Apple>
ArrayList<? super Apple> 满足 ArrayList<? super Apple>
ArrayList<? super Fruit> 满足 ArrayList<? super Apple>
ArrayList<?> 不满足 ArrayList<? super Apple>因为List<?> 等价于List<? extends Object>,那么可能ArrayList
ArrayList<? super FujiApple> 不满足 ArrayList<? super Apple> 因为可能ArrayList< FujiApple>
在这里插入图片描述
如果使用“? super类型”接收泛型对象的时候,则能够添加数据,但是不能添加父对象
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值