Avatar ·

List<Dog> 是 List<Animal> 的子类吗?为什么 Java 中的泛型不是多态的?

大家好!我是 Java 新手,正在尝试理解泛型。我写了一段简单的代码,但编译器报错了,我不明白为什么。 我有一个类层次结构:Animal 是父类,Dog extends Animal 和 Cat extends Animal。 现在我想写一个方法,接受动物列表并打印它们的名字。按理说,如果我传入一个狗列表,应该能正常工作,因为 Dog 是 Animal。但编译器却报错了! 代码如下: ```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); // 编译错误! } public static void printAnimalNames(List animals) { for (Animal a : animals) { System.out.println(a.getName()); } } } ``` 错误信息:`incompatible types: List cannot be converted to List`。