gpt4 book ai didi

java - 这个java泛型是什么意思?

转载 作者:行者123 更新时间:2023-12-04 05:07:38 26 4
gpt4 key购买 nike

最近看到一个函数声明如下:

public static <T extends Comparable<? super T>> void sort(List<T> list) {
//....
}

谁能告诉我 <T extends Comparable<? super T>> 的 T 设置了哪些限制?代码片段。非常感谢!!!!

最佳答案

我来一刀。从简单的开始:

static <T> void sort(List<T> list)

假设您正在对 T 类型的列表进行排序。但是,我们需要能够对 T 进行排序,因此我们必须将其限制为:
static <T extends Comparable> void sort(List<T> list)

这表示您正在对作为 Comparable 子类的 T 列表进行排序。由于 Comparable 是一个接口(interface),这实际上只是意味着它是一个实现 Comparable 接口(interface)的事物的列表。但这还不够。 Foo 可以在 Baz 与 Foo 完全不相关的情况下实现 Comparable。所以我们最终得到:
static <T extends Comparable<? super T>> void sort(List<T> list)

这表示您正在对一个 T 列表进行排序,其中 T 表示任何实现 Comparable - 它可以通过 T 上的方法或 T 的某个祖先(父类(super class))来比较两个 T。这是排序所必需的,因为排序需要在排序过程中比较项目。如果没有明确的比较器,唯一的方法是让项目能够比较自己。比较器不需要在 T 本身上 - 如果有一个实现 Comparable 的父类(super class),那也很好。

关于java - 这个java泛型是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15318927/

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