Genéricos de Java - Métodos

Puede escribir una única declaración de método genérico que se puede llamar con argumentos de diferentes tipos. Según los tipos de argumentos pasados ​​al método genérico, el compilador maneja cada llamada al método de manera apropiada. Las siguientes son las reglas para definir los métodos genéricos:

  • Todas las declaraciones de métodos genéricos tienen una sección de parámetro de tipo delimitada por corchetes angulares (<y>) que precede al tipo de retorno del método (<E> en el siguiente ejemplo).

  • Cada sección de parámetro de tipo contiene uno o más parámetros de tipo separados por comas. Un parámetro de tipo, también conocido como variable de tipo, es un identificador que especifica un nombre de tipo genérico.

  • Los parámetros de tipo se pueden usar para declarar el tipo de retorno y actuar como marcadores de posición para los tipos de argumentos pasados ​​al método genérico, que se conocen como argumentos de tipo real.

  • El cuerpo de un método genérico se declara como el de cualquier otro método. Tenga en cuenta que los parámetros de tipo solo pueden representar tipos de referencia, no tipos primitivos (como int, double y char).

Ejemplo

El siguiente ejemplo ilustra cómo podemos imprimir una matriz de diferentes tipos utilizando un único método genérico:

public class GenericMethodTest {
   // generic method printArray
   public static < E > void printArray( E[] inputArray ) {
      // Display array elements
      for(E element : inputArray) {
         System.out.printf("%s ", element);
      }
      System.out.println();
   }

   public static void main(String args[]) {
      // Create arrays of Integer, Double and Character
      Integer[] intArray = { 1, 2, 3, 4, 5 };
      Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
      Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };

      System.out.println("Array integerArray contains:");
      printArray(intArray);   // pass an Integer array

      System.out.println("\nArray doubleArray contains:");
      printArray(doubleArray);   // pass a Double array

      System.out.println("\nArray characterArray contains:");
      printArray(charArray);   // pass a Character array
   }
}

Esto producirá el siguiente resultado:

Salida

Array integerArray contains:
1 2 3 4 5 

Array doubleArray contains:
1.1 2.2 3.3 4.4 

Array characterArray contains:
H E L L O