如何编写通用Java方法并比较方法中泛型类型的两个变量?

soh*_*ham 5 java arrays generics

我写了以下代码:

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;
    }
Run Code Online (Sandbox Code Playgroud)

问题出在这一行:if(array[i] > max).

我知道Java >在未知/任意类的情况下无法理解运算符.

同时,我不想为我知道将要发送的类的对象编写不同的方法.

有解决方法吗?

aio*_*obe 7

您需要更改TT 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));
Run Code Online (Sandbox Code Playgroud)