java泛型通配符

通配符有三种:

第一种: 问号(?),表示所有类型

第二种:extends  + 类名 ,表示该类及继承了该类的类型

第三种:super + 类名, 表示该类和该类的父类

第一种:?

 因为List是有泛型的,用一个<?>表示我在调用test1()方法时可以传入一个实行了List接口的类的对象,并给list的泛型指定一个类型,这个类型就可以是任意类型

效果和这样写是一样的,也是在调用test1() 方法时要给E指定一个类型,但是这样写要定义一个泛型,比较麻烦,而且如果我E只是在形参用一下,还来为它专门定义一个泛型就有些繁琐了

第二种:extends

有三个类,Aa,Bb,Cc,继承关系如图

 给类Dd定义一个泛型<E extends Aa>, 这表示:在给E指定泛型的时候,就只能指定Aa及其子类(在这里就有Bb,Cc)

同理:方法中也是一样的用法

 方法形参中:表示传入一个实现了List接口的类的对象,并且在指定该对象的泛型时,只能是Aa及其子类

 第三种:super

super貌似只能应用于以下两种情况 

这种情况就是在传参时只能是Aa及其父类

 ArrayList <>里面只能是Aa及其父类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值