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

回到顶部