Sobes.tech
Middle+

Qu'est-ce que la covariance de types?

sobes.tech IA

Réponse de l'IA

La covariance des types est une propriété du système de types qui permet d'utiliser un type plus spécifique (sous-type) là où un type plus général (super-type) est attendu.

Dans le contexte de Java, cela se manifeste souvent lors de l'utilisation de l'héritage et des génériques. Par exemple, si la classe Chat hérite de Animal, la covariance permet d'utiliser Chat là où un Animal est attendu.

Cependant, en Java, les génériques sont invariants par défaut, c'est-à-dire que List<Chat> n'est pas un sous-type de List<Animal>. Pour supporter la covariance, on utilise des types wildcard avec ? extends:

List<? extends Animal> animaux = new ArrayList<Chat>();

Ici, ? extends Animal indique que la liste contient des objets de type Animal ou ses sous-types, ce qui permet de lire en toute sécurité des objets de la liste, mais interdit d'ajouter de nouveaux éléments (sauf null).

Ainsi, la covariance aide à utiliser des sous-types à des endroits où l'on attend des types plus généraux, tout en maintenant la sécurité des types et la flexibilité du code.