Generici Java: limiti multipli
Un parametro di tipo può avere più limiti.
Sintassi
public static <T extends Number & Comparable<T>> T maximum(T x, T y, T z)
Dove
maximum - il massimo è un metodo generico.
T- Il parametro di tipo generico passato al metodo generico. Può accettare qualsiasi oggetto.
Descrizione
La T è un parametro di tipo passato alla classe generica Box e dovrebbe essere un sottotipo della classe Number e deve impiantare l'interfaccia Comparable. Nel caso in cui una classe venga passata come vincolata, dovrebbe essere passata prima dell'interfaccia altrimenti si verificherà un errore in fase di compilazione.
Esempio
Crea il seguente programma java utilizzando qualsiasi editor di tua scelta.
package com.tutorialspoint;
public class GenericsTester {
public static void main(String[] args) {
System.out.printf("Max of %d, %d and %d is %d\n\n",
3, 4, 5, maximum( 3, 4, 5 ));
System.out.printf("Max of %.1f,%.1f and %.1f is %.1f\n\n",
6.6, 8.8, 7.7, maximum( 6.6, 8.8, 7.7 ));
}
public static <T extends Number
& Comparable<T>> T maximum(T x, T y, T z) {
T max = x;
if(y.compareTo(max) > 0) {
max = y;
}
if(z.compareTo(max) > 0) {
max = z;
}
return max;
}
// Compiler throws error in case of below declaration
/* public static <T extends Comparable<T>
& Number> T maximum1(T x, T y, T z) {
T max = x;
if(y.compareTo(max) > 0) {
max = y;
}
if(z.compareTo(max) > 0) {
max = z;
}
return max;
}*/
}
Questo produrrà il seguente risultato:
Produzione
Max of 3, 4 and 5 is 5
Max of 6.6,8.8 and 7.7 is 8.8