【发布时间】:2015-06-01 09:08:48
【问题描述】:
我写了以下代码:
private static <T> T getMax(T[] array) {
if(array.length == 0) {
return null;
}
T max = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] > max)
max = array[i];
}
return max;
}
问题出在这一行:if(array[i] > max)。
我知道在未知/任意类的情况下,Java 无法理解 > 运算符。
同时,我不想为我知道我将要发送的类的对象编写不同的方法。
有解决办法吗?
【问题讨论】:
-
您最好的选择是强制类型 T 必须是 Comparable。您可以将其更改为
<T extends Comparable<? super T>>,然后使用compareTo。 -
或使用Comparator。