Avatar ·

List<Dog> est-il une sous-classe de List<Animal> ? Pourquoi les generics en Java ne sont-ils pas polymorphes ?

Bonjour, collègues ! Je suis débutant en Java et j'essaie de comprendre les generics. J'ai écrit un code simple, mais le compilateur se plaint et je ne comprends pas pourquoi. J'ai une hiérarchie de classes : Animal est la classe parente, Dog extends Animal et Cat extends Animal. Maintenant, je veux écrire une méthode qui prend une liste d'animaux et affiche leurs noms. Logiquement, si je lui passe une liste de chiens, tout devrait fonctionner, car Dog est un Animal. Mais le compilateur génère une erreur ! Voici le code : ```java public class GenericsTest { public static void main(String[] args) { List dogs = new ArrayList<>(); dogs.add(new Dog("Rex")); dogs.add(new Dog("Buddy")); printAnimalNames(dogs); // Erreur de compilation ! } public static void printAnimalNames(List