Genéricos de Java: múltiples límites
Un parámetro de tipo puede tener varios límites.
Sintaxis
public static <T extends Number & Comparable<T>> T maximum(T x, T y, T z)
Dónde
maximum - máximo es un método genérico.
T- El parámetro de tipo genérico pasado al método genérico. Puede tomar cualquier Objeto.
Descripción
La T es un parámetro de tipo que se pasa a la clase Box genérica y debe ser un subtipo de la clase Number y debe implicar una interfaz comparable. En caso de que una clase se pase como vinculada, debe pasarse primero antes de la interfaz, de lo contrario se producirá un error de tiempo de compilación.
Ejemplo
Cree el siguiente programa Java utilizando cualquier editor de su elección.
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;
}*/
}
Esto producirá el siguiente resultado:
Salida
Max of 3, 4 and 5 is 5
Max of 6.6,8.8 and 7.7 is 8.8