扩展方法签名中的类

时间:2014-06-07 08:34:54

标签: java

有人可以解释这是做什么的吗?这是一个泛型问题,但由于我在Java中学习,我将其标记为Java。

public static <T extends Comparable<? super T>> void quickSort(T[] list) {...}

我不明白的是这一部分:<T extends Comparable<? super T>>

我试过看this,但它似乎没有以明确的方式解释它。

我的猜测是:遗传类型T扩展了Comparable接口,它本身需要泛型类型作为泛型类型的超类。但我真的不明白这一点。

1 个答案:

答案 0 :(得分:1)

示例:

public class X implements Comparable<X> {
}

班级X实施Comparableextends ComparableComparable的通用参数为X,因为Xsuper } Xjava 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),它需要在编译时知道这是有效的。