Génériques Java - Méthodes

Vous pouvez écrire une seule déclaration de méthode générique qui peut être appelée avec des arguments de types différents. En fonction des types d'arguments passés à la méthode générique, le compilateur gère chaque appel de méthode de manière appropriée. Voici les règles pour définir les méthodes génériques -

  • Toutes les déclarations de méthode générique ont une section de paramètre de type délimitée par des crochets (<et>) qui précède le type de retour de la méthode (<E> dans l'exemple suivant).

  • Chaque section de paramètre de type contient un ou plusieurs paramètres de type séparés par des virgules. Un paramètre de type, également appelé variable de type, est un identificateur qui spécifie un nom de type générique.

  • Les paramètres de type peuvent être utilisés pour déclarer le type de retour et agir comme des espaces réservés pour les types d'arguments passés à la méthode générique, appelés arguments de type réels.

  • Le corps d'une méthode générique est déclaré comme celui de toute autre méthode. Notez que les paramètres de type ne peuvent représenter que des types de référence, pas des types primitifs (comme int, double et char).

Exemple

L'exemple suivant illustre comment nous pouvons imprimer un tableau de type différent en utilisant une seule méthode générique -

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
   }
}

Cela produira le résultat suivant -

Production

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