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

返回类型的Java界通配符

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

返回类型的Java界通配符

有界通配符具有传染性,这就是您链接到的页面似乎在哀叹。好吧,无可否认……但是我想我并不认为这是一个大问题。

在很多情况下,正是 由于
有传染性,我才返回有界通配符。JDK的好坏(我说的更糟,但这是一个不同的肥皂盒:))没有只读集合的​​接口。如果我返回了一个

List<Foo>
我不希望别人修改的代码(甚至可以安全地包装在中
Collections.unmodifiableList
),则无法在返回签名中声明。作为穷人的解决方法,我经常回去
List<?extends Foo>
。仍然可以尝试通过删除元素或插入来修改该列表
null
,但是至少您不能
add(new Foo())
提醒您该列表可能是只读的。

更笼统地说,如果您确实希望调用站点对对象的访问受到限制,则返回具有有限返回类型的东西是完全合理的。

另一个示例是线程安全队列,您将其移交给其他线程,其中一个线程是生产者,另一个线程是使用者。如果给生产者a

Queue<? superFoo>
,很显然,您打算让他们将物品放入其中(而不是取出物品)。同样,如果给消费者一个
Queue<? extendsFoo>
,很显然,您打算让他们取出物品(而不放入物品)。



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

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

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