栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

什么是PECS(生产者扩展了超级消费者)?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

什么是PECS(生产者扩展了超级消费者)?

tl; dr: “ PECS”是从集合的角度来看的。如果仅从通用集合中提取项目,则它是生产者,应使用extends; 如果您仅将物品塞入其中,则它是消费者,应该使用super。如果您都使用同一集合,则不应使用extends或super。

假设您有一个方法以事物的集合为参数,但是您希望它比只接受一个更加灵活Collection

情况1:您想浏览集合并为每个项目做事。
然后列表是生产者,因此您应该使用

Collection<? extends Thing>

原因是

a Collection<? extends Thing>
可以包含的任何子类型Thing,因此每个元素Thing在执行操作时都将表现为a 。(实际上,您无法将任何内容添加到中
Collection<? extends Thing>
,因为您无法在运行时知道该集合包含哪种特定的子类型Thing。)

情况2:您想向集合中添加东西。
那么列表是一个消费者,因此您应该使用

Collection<? super Thing>

这里的理由是,与不同

Collection<? extends Thing>
,无论实际的参数化类型是什么,
Collection<? super Thing>
都可以始终保持Thing。在这里,您不必关心列表中已经存在的内容,只要Thing可以添加即可。这就是? super Thing保证。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425859.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号