Java >> Tutorial de Java >  >> Java

Tipos acotados con genéricos en Java

Puede haber ocasiones en las que desee restringir los tipos de tipos que se pueden pasar a un parámetro de tipo. Por ejemplo, es posible que un método que opera con números solo quiera aceptar instancias de Número o sus subclases. Para esto están los parámetros de tipo acotado.

Para declarar un parámetro de tipo acotado, enumere el nombre del parámetro de tipo, seguido de la palabra clave extends, seguido de su límite superior.

Ejemplo

El siguiente ejemplo ilustra cómo se usa extends en un sentido general para significar "extender" (como en las clases) o "implementar" (como en las interfaces). Este ejemplo es un método genérico para devolver el mayor de tres objetos comparables −

Demostración en vivo

public class MaximumTest {
   // determines the largest of three Comparable objects

   public static <T extends Comparable<T>> T maximum(T x, T y, T z) {
      T max = x;   // assume x is initially the largest

      if(y.compareTo(max) > 0) {
         max = y;   // y is the largest so far
      }
      if(z.compareTo(max) > 0) {
         max = z;   // z is the largest now                
      }
      return max;   // returns the largest object  
   }
   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 ));

      System.out.printf("Max of %s, %s and %s is %s\n","pear","apple", "orange", maximum("pear", "apple", "orange"));
   }
}

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

Max of pear, apple and orange is pear

Etiqueta Java