Les génériques paramètrent une classe, une interface ou une méthode par un type, comme List<String>. Le compilateur vérifie les types et évite les conversions manuelles. Les paramètres de type ne peuvent pas être des primitifs, et le type est effacé à l'exécution (type erasure).
Exemple
class Boite<T> {
private T valeur;
T get() { return valeur; }
}