簡體   English   中英

如何編寫通用Java方法並比較方法中泛型類型的兩個變量?

[英]How do I write generic Java method and compare two variables of the generic type inside the method?

我寫了以下代碼:

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) ,and
  • if (array[i].compareTo(max) > 0) { ... }

但請注意,您可以使用

maxElement = Collections.max(Arrays.asList(array));

是的,通過向T添加Comparable上限,有一種解決方法。

因為<運算符不能處理對象,所以必須使用等效功能,即Comparable接口中的compareTo方法。

通過提供上限確保類型TComparable的。

private static <T extends Comparable<T>> T getMax(T[] array)

然后,代替>運算符,調用compareTo

if(array[i].compareTo(max) > 0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM