Ich habe den folgenden Code geschrieben:Wie schreibe ich generische Java-Methode und vergleiche zwei Variablen des generischen Typs innerhalb der Methode?
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;
}
Das Problem in dieser Linie ist: if(array[i] > max)
.
Ich verstehe, dass Java den Operator >
im Fall von unbekannten/beliebigen Klassen nicht verstehen kann.
Gleichzeitig möchte ich nicht verschiedene Methoden für die Objekte der Klassen schreiben, von denen ich weiß, dass ich sie senden werde.
Gibt es eine Problemumgehung?
Ihre beste Wette ist zu zwingen, dass der Typ T vergleichbar sein müssen. Sie können es in '>' ändern und dann 'compareTo' verwenden. –
Oder verwenden Sie einen [Comparator] (https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html). – fabian