泛型中的继承问题

48uugxga
  • 24
public static <T extends Comparable<T>> Pair<T> minmax(T[] a){
        if (a == null || a.length == 0 )  return null;
        T min = a[0];
        T max = a[0];
        for (int i = 1; i < a.length; i++) {
            if (min.compareTo(a[i]) > 0)  min = a[i];
            if (max.compareTo(a[i]) < 0)  max = a[i];
        }
        return new Pair<>(min, max);
    }
public static <T extends Comparable> Pair<T> minmax(T[] a) {}

上面2个代码中<T extends Comparable<T>>和<T extends Comparable>这两种的用法有区别吗,T extend Comparable<T> 我知道是指 类型是Comparable及其不确定的某子类,那我感觉后者也是指T是其子类,这2种用法有明显的区别吗

回复
阅读 796
2 个回答
✓ 已被采纳

泛型自限定,相当于多了一层约束,即T extends ComparableComparable<T> 互相约束,两个T 都需要满足条件 即 比较的参数必须实现 Comparable ,如果是 T extends Comparable 仅仅只是 参数必须实现 Comparable 而已。当然,楼上其实说得也没有错,只是没解释而已。

Comparable == Comparable<Object>

宣传栏