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种用法有明显的区别吗
泛型自限定,相当于多了一层约束,即
T extends Comparable
和Comparable<T>
互相约束,两个T 都需要满足条件 即比较的参数必须实现 Comparable
,如果是T extends Comparable
仅仅只是参数必须实现 Comparable
而已。当然,楼上其实说得也没有错,只是没解释而已。