有人可以解释这是做什么的吗?这是一个泛型问题,但由于我在Java中学习,我将其标记为Java。
public static <T extends Comparable<? super T>> void quickSort(T[] list) {...}
我不明白的是这一部分:<T extends Comparable<? super T>>
我试过看this,但它似乎没有以明确的方式解释它。
我的猜测是:遗传类型T扩展了Comparable接口,它本身需要泛型类型作为泛型类型的超类。但我真的不明白这一点。
答案 0 :(得分:1)
示例:
public class X implements Comparable<X> {
}
班级X
实施Comparable
,extends Comparable
,Comparable
的通用参数为X
,因为X
为super
} X
(java generics super keyword)
另一个例子:
public class Y {}
public class X extends Y implements Comparable<Y> {
}
另一个例子:
public class X implements Comparable<Object> {
}
但这不会奏效:
public class A {}
public class X implements Comparable<A> {
}
由于类X
仅与不在其继承层次结构中的对象相当。
排序算法只是调用x.compareTo(y)
,它需要在编译时知道这是有效的。