gpt4 book ai didi

java - 通用代码中的困惑

转载 作者:太空宇宙 更新时间:2023-11-04 12:57:02 24 4
gpt4 key购买 nike

List<? extends someObject> list
List<? extends Comparable<? super T>> list

我无法理解第二个代码。正如我从第一个代码中了解到的,它存储扩展某个对象的任何对象,但在第二个代码中这是否意味着它存储接口(interface)?

最佳答案

第一个是列表,其中至少包含 SomeObject 。您可能无法插入 SomeObject在列表中,如果它是一个真正的子类的列表。这样看:

List<? extends Animal> list

这是一个至少是 Animal 的列表。 。情况可能是,这是一个猫列表,或者狗列表。我们不知道,因此? 。无论如何,我们知道我们至少可以获得 Animal s 不在列表中,但我们无法插入,因为我们不知道列表中的确切类型。

第二个是适用于 T 的可比较实现(或派生接口(interface))列表。或一些父类(super class)。因此,此列表中的所有对象都可以用于比较 T对象。但是当然,和以前一样,我们无法确定 Comparable 的确切类型。该列表用作项目,因此我们无法添加任何内容,只能以这种形式读取它。

编辑:扩展Comparable<? super T> :使用 super 似乎违反直觉。而不是extends 。这是因为如果你想比较两个事物,你可以通过比较事物本身或事物的任何更高类别来实现。所以,如果我想比较,我知道如何比较动物就足够了。如果我可以比较动物,我就可以比较任何动物,包括狗、猫等。但是,如果我只知道如何比较,我可能不知道如何比较。所以如果你想找人比较T ,你必须寻找可以比较的人T ,或 T 的任何父类(super class) .

关于java - 通用代码中的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35308348/

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