Avatar ·

Ist List<Dog> eine Unterklasse von List<Animal>? Warum sind Generics in Java nicht polymorph?

Hallo Kollegen! Ich bin neu in Java und versuche, Generics zu verstehen. Ich habe einen einfachen Code geschrieben, aber der Compiler meckert, und ich verstehe nicht, warum. Ich habe eine Klassenhierarchie: Animal ist die Elternklasse, Dog extends Animal und Cat extends Animal. Jetzt möchte ich eine Methode schreiben, die eine Liste von Tieren nimmt und ihre Namen ausgibt. Logischerweise sollte es funktionieren, wenn ich eine Liste von Hunden übergebe, denn Dog ist ein Animal. Aber der Compiler gibt einen Fehler aus! Hier ist der 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); // Compiler-Fehler! } public static void printAnimalNames(List