Java如何将父类转换为子类?

3

以下是我的代码:

for (DrawableEntity entity : drawableEntityList) {
    if (entity instanceof Beam) {
        (Beam) entity.age += timeElapsed;
    }
    else if (entity instanceof Block) {

    }
}

基本上,drawableEntityList 是一个 DrawableEntitysVector,我想要遍历 Vector 中的所有内容。然后,根据它们是子类 Beam 还是子类 Block,我想要做出不同的反应。
问题在于,我正在尝试更改仅子类拥有的变量,我想用 (Beam) 进行转换,但它没有起作用。
难道不能将父类强制转换为子类吗?

1
只是猜测: ((Beam) entity).age += timeElapsed; - Harry Joy
成员访问运算符(“.”)比强制类型转换运算符(“(Type)”)具有更高的优先级,因此写成(Beam) entity.age += timeElapsed;等同于((Beam) entity.age) += timeElapsed;。这会导致两个错误:(1)无法将entity.age转换为Beam,以及(2)类型为Beam的表达式不适用于+=运算符的左操作数。希望这能帮助理解。 - Kröw
2个回答

6
你的语法书写有误。
尝试使用以下语法:
if (entity instanceof Beam) {
    ((Beam) entity).age += timeElapsed;
}
else if (entity instanceof Block) {

}

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接