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
varvs génériques - utiliser raw types (
List) - mauvaise utilisation des wildcards
8. Question type (comme ton QCM)
Correct :
List<?>Map<?, ?>T[]
Faux :
List varMap var
9. À retenir
<?>= type inconnuT= 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.”