题目描述
问题背景:在设计一个泛型的获取数组最小值的函数.并且这个方法只能接受Number的子类并且实现了Comparable接口。
题目来源及自己的思路
Number类的子类中实现的compareTo方法,也是使用比较运算符做判断
public int compareTo(Integer anotherInteger) {
return compare(this.value, anotherInteger.value);
}
public static int compare(int x, int y) {
return (x < y) ? -1 : ((x == y) ? 0 : 1);
}
错误代码,编译报错
public static <T extends Number & Comparable<? super T>> T method(T[] values) {
if (values == null || values.length == 0) return null;
T min = values[0];
for (int i = 1; i < values.length; i++) {
if (min.compareTo(values[i]) > 0) min = values[i];
//为什么不能使用比较运算符,编译报错
// if (values[i] > min) min = values[i];
}
return min;
}
Java不支持运算符重载(C++可以),除了基本数据类型,对象是不能用<比较的,而Java的泛型类型只能是类,不能是基本数据类型(C++可以)。