我写了下面的代码:
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
至 T extends Comparable<T>
并使用 compareTo
方法。即:
-
private static <T extends Comparable<T>> T getMax(T[] array)
, 和 -
if (array[i].compareTo(max) > 0) { ... }
但请注意,您可以使用
maxElement = Collections.max(Arrays.asList(array));
关于java - 如何编写泛型 Java 方法并比较方法中泛型类型的两个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29310847/