获取原则的解释

获取原则的解释

我读过O'Reilly的书,因为我开始了解这个获取原则

  • extends仅从结构中获取值时使用通配符。

  • super仅在值放入结构时使用通配符。

  • 当你们想要从一个结构中获取和放置时,不要使用通配符。

例外情况是:

  • extends除了null属于每个引用类型的值之外,您不能将任何内容放入使用通配符声明的类型中。

  • super除了type的值之外,您不能从使用通配符声明的类型中获取任何内容Object,这是每种引用类型的超类型。

任何人都可以帮助我深入探索这条规则吗?如果可能的话,请将它们分层。


不负相思意
浏览 263回答 1
1回答

慕婉清6462132

考虑一堆香蕉。这是一个Collection<? extends Fruit>特定种类的水果的集合 - 但你不知道(从那个宣言)它是什么样的水果集合。你可以从它得到一个项目,并知道它肯定会是一个水果,但你不能添加它 - 你可能会尝试添加一个苹果到一堆香蕉,这肯定是错误的。您可以添加null它,因为这将是任何类型的水果的有效值。现在考虑一个水果碗。这是一个Collection<? super Banana>,因为它是“大于”某种类型的集合Banana(例如,Collection<Fruit>或Collection<TropicalFruit>)。你绝对可以添加一个香蕉,但如果你从碗里拿一个东西你不知道你会得到什么 - 它可能不是香蕉。所有你肯定知道它将是一个有效的(可能null)Object参考。(一般来说,对于Java泛型问题,Java泛型常见问题解答是一个很好的资源,其中包含几乎所有与泛型有关的答案,你可能会把它抛出来。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java