Méthode générique | Java
Les méthodes génériques sont celles qui sont écrites avec une seule déclaration et qui peuvent être appelées avec des arguments de différents types.
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:
- Les méthodes génériques ont un type paramétré(qui représente un paramètre de type générique) avant le type de retour de la déclaration de méthode
- Les méthodes génériques peuvent avoir différents types paramétrés séparés par des virgules dans la signature de méthode.
- Le corps d’une méthode générique est comme une méthode normale
[wx_adsense]
Type paramétré
Les conventions de dénomination de types paramétrés sont importantes pour apprendre la généricité en Java. Les types paramétrés courants sont les suivants:
- T – Type
- E – Element
- K – Key
- N – Number
- V – Value
Exemple 1: Méthode générique en Java
public static <T> T addTo(T e, Collection<T> c){
c.add(e);
return e;
}
Cette méthode spécifie un type T qui est utilisé à la fois comme type paramétré pour le paramètre d’élément et le type générique de collection. Remarquez comment il est désormais possible d’ajouter des éléments à la collection.
Alors, comment le compilateur connaît-il le type T?
La réponse est que le compilateur déduit cela de votre utilisation de la méthode. Par exemple:
String str = "WayToLearnX"; List<String> liste = new ArrayList<String>(); String e = addTo(str, liste);
Integer i = new Integer(25); List<Integer> c = new ArrayList<Integer>(); Integer e = addTo(i, c);
Remarquez comment nous pouvons appeler la méthode addTo() en utilisant à la fois le type String et Integer et leurs collections correspondantes. Le compilateur connait le type du paramètre T et le paramètre de collection <T>, que le type T doit être pris de ces paramètres au moment de l’appel.
[wx_adsense]
Exemple 2: Méthode générique en Java
L’exemple suivant montre comment nous pouvons afficher un tableau de type différent en utilisant une seule méthode générique:
public class Main {
// méthode générique
public static <E> void display(E[] tab) {
for(E e : tab) {
System.out.printf("%s ", e);
}
System.out.println();
}
public static void main(String args[]) {
Integer[] i = {1, 2, 3};
System.out.println("Tableau des entiers:");
display(i); // passer un tableau entier
Character[] c = {'A', 'B', 'C'};
System.out.println("\nTableau des caractères:");
display(c); // passer un tableau de caractères
}
}
Sortie:
Tableau des entiers: 1 2 3 Tableau des caractères: A B C[wx_amazon]

