我知道为什么不应该这样做。但是有没有办法向外行解释为什么这是不可能的。你可以很容易地向外行解释:Animal animal = new Dog();
。狗是一种动物,但狗的列表不是动物的列表。
最佳答案
假设您创建了一个狗列表。然后,您将其声明为 List
然后他把它还给你,你现在有一个狗列表,中间有一只猫。困惑随之而来。
请务必注意,由于列表的可变性,存在此限制。在 Scala 中(例如),您可以声明 Dogs 列表是 Animals 列表。这是因为 Scala 列表(默认情况下)是不可变的,因此将 Cat 添加到 Dogs 列表中将为您提供 新 列表strong>动物。
关于java - 有什么简单的方法可以解释为什么我不能做 List<Animal> animals = new ArrayList<Dog>()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2346763/