集合和泛型的关系

1 List 、 List 、 List<?>的区别
  • List:可以在集合中装入任何对象。但是在正常情况下,一般集合中只存放一种元素。
  • List: 可以将任意对象装入List集合中,简单的可以看成和第一种是一样的。
  • List<?>: 问号在正则表达式中可以匹配任何字符,List< ?>称为通配符集合。可以接受任何类型的集合引用赋值,不能 添加 任何元素,但可以remove和clear,并非immutable集合.List<?>一般作为参数来接受外部集合,或者返回一个不知道具体元素类型的集合。

2 List,List<? extends T>,List<? super T>的区别

  • List< T>: 最大的问题就是只能放置T这一种类型.
  • List<? extends T>: 可以放置多种受泛型约束的类型,更大程度表示Get First,适用于消费集合元素为主的场景.
    • <? extends T> 可以赋值给T以及T子类集合,上界为T.取出来的类型带有泛型限制,向上转型为T。null可以表示任何类型,**除了null外,任何元素元素都不能添加到<? extends T> 集合中。**
  • List<? super T>:可以放置多种受泛型约束的类型,更大程度表示Put First,适用于生产集合元素为主的场景.

** <? super T>:可以赋值给任何T以及T的父类类型,下界为T。只能添加T及子类<? extends T>中**。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值