Java在容器中升起



我有两个班级父母,孩子和孩子延长父母。

Parent parent = new Child();

可以按预期工作,但是当对象在类似的容器中时,这种混乱就会发生。

Vector<Parent> vp = new Vector<Child>();

这给出了错误:

incompatible types: Vector<Child> cannot be converted to Vector<Parent>

所以我的问题是容器是否会阻止我们执行

时发生的隐式打字
parent = new Child();

看起来您期望给定ParentChild子类,Vector<Child>Vector<Parent>的子类。此行为称为covariance(事物变化在一起),这不是Java的通用集合中的工作方式。在Java Vector<Child>Vector<Parent>中没有相关(它们具有invariant关系)。

这里更详细的解释:以简单的英语解释的协方差,不变性和违反率?

相关内容

  • 没有找到相关文章

最新更新