[英]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
方法。
通過提供上限確保類型T
是Comparable
的。
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.