Aller au contenu

Java — Génériques (Generics)

Les génériques permettent d’écrire du code typé et réutilisable, tout en évitant des erreurs à la compilation.


1. Idée simple

Les génériques permettent de :

➡️ spécifier le type à la compilation

  • sécurité de type
  • pas besoin de cast

2. Exemple simple

List<String> list = new ArrayList<>();
list.add("hello");

// pas besoin de cast
String s = list.get(0);

sans génériques → cast obligatoire


3. Syntaxe générique

class Box<T> {
    private T value;

    public void set(T value) { this.value = value; }
    public T get() { return value; }
}

T = type générique


4. Wildcards

List<?>

List<?> list;

liste de type inconnu


Map<?, ?>

Map<?, ?> map;

clé et valeur inconnues


5. Tableaux génériques

T[] array;

valide


6. Ce qui est faux

List var; // ❌ faux
Map var;  // ❌ faux

var ≠ générique


7. Pourquoi utiliser les génériques ?

  • éviter ClassCastException
  • vérifier les types à la compilation
  • rendre le code plus clair

Pièges fréquents

  • confusion var vs génériques
  • utiliser raw types (List)
  • mauvaise utilisation des wildcards

8. Question type (comme ton QCM)

Correct :

  • List<?>
  • Map<?, ?>
  • T[]

Faux :

  • List var
  • Map var

9. À retenir

  • <?> = type inconnu
  • T = type paramétré
  • var ≠ générique

🧾 En résumé

  • les génériques assurent la sécurité de type
  • utilisés partout (collections, APIs…)
  • indispensables en Java moderne

“Generics ensure type safety at compile time.”


Voir aussi