Generics
Les génériques permettent aux types d'être des paramètres, rendant possibles des conteneurs et algorithmes sûrs vis-à-vis des types et réutilisables, qui lient les types concrets à l'instanciation.
Objectif
Écrire du code réutilisable et sûr vis-à-vis des types, en évitant la duplication et les vérifications de types à l'exécution.
Mécanisme
Types paramétrés : List<T> fournit une List pour tout type T. Java utilise l'effacement de types (aucune information générique à l'exécution), les templates C++ génèrent du code pour les types concrets, Rust monomorphise. La covariance/contravariance contraint les relations de sous-typage.
Cas d’usage
- Conception de bibliothèques de conteneurs
- Réutilisation de type sûr
- Conception d'API