泛型中的继承问题

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种用法有明显的区别吗

阅读 2.3k
2 个回答

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

Comparable == Comparable<Object>

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题