首页 > 其他 > 详细

秋招之路4:泛型中的<? extends E>和<? super E>

时间:2020-02-17 14:28:20      阅读:81      评论:0      收藏:0      [点我收藏+]

<? extends E>

  1. ? 是继承于E的,用来限制元素的类型上限,?是E的子类或E
  2. 赋值:只能是E的子类给父类赋值。
  3. 写入:因为惧怕类型污染,只能写入null(null属于全类型)。
  4. 读取:咋读都可以

<? super E>

  1. ? 超类于E,用来限制元素的类型下限,?是E的父类或E
  2. 赋值:只能是E的父类给子类赋值
  3. 写入:可以添加E,E的子类,但是不能添加E的父类

    原因:E的子类都可以向上转换为某一个?,
    但是E的父类有很多,避免类型污染,不能随意添加。

  4. 读取:必须进行强制类型转换

PECS原则

当需要频繁取值,而不需要写值则使用" ? extends T "作为数据结构泛型。
相反,当需要频繁写值,而不需要取值则使用" ? super T "作为数据结构泛型。
又要频繁写又要频繁读,就别用泛型通配符。

秋招之路4:泛型中的<? extends E>和<? super E>

原文:https://www.cnblogs.com/whyaza/p/12321216.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!