Ho scritto il seguente codice:Come scrivere un metodo Java generico e confrontare due variabili del tipo generico all'interno del metodo?
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;
}
Il problema è in questa linea: if(array[i] > max)
.
Capisco che Java non possa comprendere l'operatore >
in caso di classi sconosciute/arbitrarie.
Allo stesso tempo, non voglio scrivere metodi diversi per gli oggetti delle classi che so che invierò.
C'è una soluzione alternativa?
La cosa migliore è quello di forzare che il tipo T deve essere paragonabile. Puoi cambiarlo in ">", quindi usare 'compareTo'. –
Oppure utilizzare un [Comparatore] (https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html). – fabian