昨天晚些时候,我与其他开发人员进行了这次对话,他们非常称职,但刚刚开始尝试使用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中的继承。我敢打赌其中一个人已经知道了原因,但我决定在这里提出一个问题,我知道经验丰富的开发人员可以使用。
感谢您的回复和建议。