Java 吞吐量原理说明
读了O’Reilly的书,因为我了解了这一计算原理。
extends
当你仅从结构中获取值时,请使用通配符。super
仅将值放入结构时,请使用通配符。当你都想从一个结构中获取和放置一个结构时,请不要使用通配符。
例外情况是:
extends
除了值null(属于每个引用类型)之外,你不能将任何东西放入用通配符声明的类型中。你不能从用
super
通配符声明的类型中获取任何东西,除了type的值Object
是每个引用类型的超类型。
谁能帮助我深入探索这个规则?如果可能的话,请把它们分层。
回答:
考虑一堆香蕉。这是Collection<? extends Fruit>
因为它是一种特定种类的水果的集合-但是你(从该声明中)不知道它是哪种水果的集合。你可以从中获得一个项目,并且知道它肯定是水果,但是你不能添加它-你可能正在尝试向一堆香蕉中添加一个苹果,这肯定是错误的。你可以添加null它,因为这对于任何种类的水果都是有效值。
现在考虑一个水果碗。这是一个Collection<? super Banana>
,因为它是某种类型“大于”的集合Banana(例如Collection<Fruit>
或Collection<TropicalFruit>
)。你绝对可以在其中添加一个香蕉,但是如果你从碗中取出一个物品,你将不知道会得到什么-它很可能不是香蕉。你唯一可以确定的是,它将是一个有效的(可能是null)Object参考。
(通常,对于Java泛型问题,Java泛型FAQ是一个很好的资源,其中包含你可能会提出的几乎所有与泛型相关的答案。)
以上是 Java 吞吐量原理说明 的全部内容, 来源链接: utcz.com/qa/428086.html