为了账号安全,请及时绑定邮箱和手机立即绑定

获取原则的解释

获取原则的解释

不负相思意 2019-08-15 16:35:45
获取原则的解释我读过O'Reilly的书,因为我开始了解这个获取原则。extends仅从结构中获取值时使用通配符。super仅在将值放入结构时使用通配符。当你们想要从一个结构中获取和放置时,不要使用通配符。例外情况是:extends除了null属于每个引用类型的值之外,您不能将任何内容放入使用通配符声明的类型中。super除了type的值之外,您不能从使用通配符声明的类型中获取任何内容Object,这是每种引用类型的超类型。任何人都可以帮助我深入探索这条规则吗?如果可能的话,请将它们分层。
查看完整描述

1 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

考虑一堆香蕉。这是一个Collection<? extends Fruit>特定种类的水果的集合 - 但你不知道(从那个宣言)它是什么样的水果集合。你可以从它得到一个项目,并知道它肯定会是一个水果,但你不能添加它 - 你可能会尝试添加一个苹果到一堆香蕉,这肯定是错误的。您可以添加null它,因为这将是任何类型的水果的有效值。

现在考虑一个水果碗。这是一个Collection<? super Banana>,因为它是“大于”某种类型的集合Banana(例如,Collection<Fruit>Collection<TropicalFruit>)。你绝对可以添加一个香蕉,但如果你从碗里拿一个东西你不知道你会得到什么 - 它可能不是香蕉。所有你肯定知道它将是一个有效的(可能nullObject参考。

(一般来说,对于Java泛型问题,Java泛型常见问题解答是一个很好的资源,其中包含几乎所有与泛型有关的答案,你可能会把它抛出来。)


查看完整回答
反对 回复 2019-08-15
  • 1 回答
  • 0 关注
  • 261 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信