我可以将超类类型的List传递给它期望其子类的List的构造函数吗?

时间:2017-12-08 12:29:40

标签: java inheritance

昨天晚些时候,我与其他开发人员进行了这次对话,他们非常称职,但刚刚开始尝试使用Java。

有一个类Foo.java扩展了Bar.java类。

public class Foo extends Bar { .. }

其中一位开发人员看到了一个消耗List<Foo>的现有模型。

List<Foo> fooList = new ArrayList<Foo>();
GoodModel model = new GoodModel(fooList);

他认为既然Bar是Foo的超类,他可以将List<Bar>传递给模型的这个构造函数,但编译器并不喜欢它。

List<Bar> barList = new ArrayList<Bar>();
GoodModel model = new GoodModel(barlist); <---- compiler complained

他和另一位开发人员试图理解为什么我偶然碰到了这次谈话,但我也无法帮助他们。我们都不了解Java中的继承。我敢打赌其中一个人已经知道了原因,但我决定在这里提出一个问题,我知道经验丰富的开发人员可以使用。

感谢您的回复和建议。

0 个答案:

没有答案