La généricité

Accueil

Définition

La généricité permet de travailler avec des variables dont on ne connaît a priori pas le type lors de la rédaction du programme.

Une première solution consiste à référencer le type Object et à transtyper. Mais cette solution montre très vite ses limites.

La généricité est disponible depuis le JDK 5.0
Cette notion est fort proche de l’introspection, puisque cette dernière permet de connaître le type d’une variable.

Dans l’exemple ci-contre, nous construisons un gardien,
c’est à dire un objet capable d’en conserver n’importe quel autre.

Sources

Accueil
Gardien
Gardien de deux objets
Véhicule
Avion, hérite de Véhicule

La généricité peut aussi fonctionner avec deux objets.
C’est le cas du gardien de deux objets.

Application concrète : les listes

Les collections sont des objets capables d’en contenir d’autres.

Les collections sont le principal champ d’application de la généricité.
Car elles peuvent contenir des objets de tous types, utilisables sans devoir transtyper depuis le type Object.

Généricité et héritage

Dans l’exemple ci-dessus, l’avion hérite du véhicule, auquel il rajoute ses caractéristiques propres.

Un objet générique prévu pour contenir des véhicules ne peut pas contenir de descendants (avions) de ces véhicules.

Pour ce faire, il faut passer par une syntaxe avec un wildcard <?>
Exemple : List <? extends Vehicule> mesObjets2; //Accepte n’importe quoi qui descend de véhicule.