gpt4 book ai didi

java - SomeClass 和 SomeClass 之间的区别

转载 作者:行者123 更新时间:2023-12-01 16:41:33 28 4
gpt4 key购买 nike

有什么区别:

SomeClass<T extends OtherClass>

SomeClass<T super OtherClass>

最佳答案

Sun 说(来自 Using and Programming Generics in J2SE 5.0)

There are three types of wildcards:

  1. "? extends Type": Denotes a family of subtypes of type Type. This is the most useful wildcard
  2. "? super Type": Denotes a family of supertypes of type Type
  3. "?": Denotes the set of all types or any

More Fun with Wildcards为这三种类型提供了一些很好的例子。

<小时/>

另一个很好的例子(取自@Adrian推荐的视频)是:

class Stack<E> {
void pushAll( Collection<? extends E> src );
void popAll( Collection<? super E> dest );
}

在这里你可以看到 super 之间的区别和extends :

对于方法pushAll想象你有一个 Stack<Number> 。您想要推送 src 的所有元素到Stack 。但是src应该可以是Collection<Integer> 。这就是您选择? extends E的原因在这里。

对于方法popAll想象你有一个 Stack<Integer> 。您想要弹出 Stack 的所有元素至dest 。但是dest应该可以是Collection<Number> 。这就是您选择? super E的原因在这里。

关于java - SomeClass<T extends OtherClass> 和 SomeClass<T super OtherClass> 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1935639/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com