容器中的Java转换

时间:2019-03-08 10:18:20

标签: java class types containers covariance

我有父类和子类两个类,子类扩展了父类。

Parent parent = new Child();

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

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

这给出了错误:

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

所以我的问题是容器是否可以防止我们这样做时发生的隐式类型转换

parent = new Child();

1 个答案:

答案 0 :(得分:0)

您似乎希望给定Child的{​​{1}}子类,ParentVector<Child>的子类。这种行为称为Vector<Parent>(事物会一起变化),而不是Java通用集合中事物的工作方式。在Java中,covarianceVector<Child>不相关(它们具有Vector<Parent>关系)。

此处有更详细的说明:Covariance, Invariance and Contravariance explained in plain English?