Napisałem następujący kod:Jak napisać ogólną metodę Java i porównać dwie zmienne typu ogólnego w metodzie?
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;
}
problem jest w tym wierszu: if(array[i] > max)
.
Rozumiem, że Java nie może zrozumieć operatora >
w przypadku nieznanych/dowolnych klas.
W tym samym czasie nie chcę pisać innych metod dla obiektów zajęć, które wiem, że będę wysyłał.
Czy istnieje obejście?
Najprościej jest, aby wymusić, że typ T muszą być porównywalne. Możesz go zmienić na '>' następnie użyj 'compareTo'. –
Lub użyj [Komparatora] (https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html). – fabian