一尘不染

任何简单的方法来解释为什么我不能列出 动物=新的ArrayList()?

java

我知道为什么不应该这样做。但是有办法向外行解释为什么这是不可能的。您可以向外行轻松解释:Animal animal = new Dog();。狗是一种动物,但是狗的列表不是动物的列表。


阅读 204

收藏
2020-09-08

共1个答案

一尘不染

假设您创建了“ 狗” 列表。然后,将其声明为 List 并将其交给同事。他 并非没有道理地 相信自己可以在里面放一只

然后,他将其还给您,您现在有了“ 狗” 列表,其中有“ ”。混乱随之而来。

重要的是要注意,由于列表的可变性,存在此限制。在Scala中(例如),您可以声明 Dogs* 列表是 Animals
列表。这是因为Scala列表(默认情况下)是不可变的,因此将 Cat 添加到 Dogs 列表将为您提供 Animals
列表。
*

2020-09-08