java中关于泛型的问题

今天闲来无事看了一篇文章,只关于java中的泛型问题,看了这篇文章才发现自己之前对泛型的了解只属于皮毛,现在简单总结下我从这篇文章中学到的,泛型就是把类型参数化,可用于类,接口,方法中。使用泛型可以消除显示的强制类型转换,还可以提供更强的类型检查。其中的有界泛型分为两种一种是<? extends T>就是"上界通配符"还有一种是<? super T>就是下界通配符,,这其中有一个坑,我之前的理解就是<? extends T>是T及其T的子类,如List<? extends T>可以存放T及其T的子类,其实并不是他指的只是T的某一不确定的子类,不是具体化的,所以不能放入任何具体的类型到list中,但可以从中读取T或T的子类。而对于List<? super T>同理,他并不是可以存放T及其T的父类类型,他也是仅指T的某一个不确定的父类,所以可以向其中添加T和T的子类元素,但是不可以添加T的父类对象。可以读取到Object及其Object的子类。

如果是频繁支持读操作,不要求写操作,可以使用<? extends T>,而对于频繁支持写操作,不要求读操作的可以使用<? super T>,如果都需要支持可以使用<T>.

以下是测试代码






其中注释掉的是编译不通过的,最后的代码是测试泛型类型擦除。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值