Java - 从包含父 class 的对象扩展 class

Java - get extended class from object containing parent class

我可能用错了术语,所以我很抱歉,我是 Java 菜鸟。

我正在使用 LibGDX 框架开发手机游戏并尝试利用其 Stage 和 Actor classes。

我创建了自己的 class,StageExtension,它是 Stage class 的扩展,因为我向其中添加了一些自己的方法。所以假设我有;

StageExtension stageExt = new StageExtension():
Actor actor = new Actor();
stageExt.addActor(actor);

这很好用。问题是当我想从 Actor 获取 Stage 以调用我自己的 StageExtension 方法之一时。 Actor 保留对 Stage 的引用,但仅包含 "Stage",例如演员 class 有 getter;

public Stage getStage () {
    return stage;
}

所以,显然我不太了解 Java。当我将 Actor 添加到舞台时,它会调用 Actor 中的 setStage(),因此 StageExtension 成功地被设置为 Actor 中的一个舞台。发生这种情况时,Java 是否会忽略我的扩展 class?

如何在不复制和修改这些核心 classes 的情况下从 Actor 调用我的 StageExtension 实例?

希望这是有道理的,谢谢。

您看到的是 Casting 的示例。您所做的是使用新的 class StageExtension 子classed Stage。因此,在您的情况下,所有 StageExtensions 都是 Stages,但并非所有 Stages 都是 StageExtensions。在这种情况下 Java 可以将 StageExtension 投射到舞台上。所以在你的情况下,如果你这样做

StageExtension somesStage = new StageExtension ();
...
actor.setStage(somesStage)

然后 java 将尝试为您将 StageExtension someStage 转换为舞​​台。在 Actor class 中,它将被视为一个舞台,因为它认为它的所有意图和目的都是如此。这将起作用,因为 StageExtension 是 Stage 的子class。要走另一条路,你应该显式地转换对象

if(actor.getStage() instanceof StageExtension){
    StageExtension myStage = (StageExtension) actor.getStage()
}

现在 Java 最好将此对象转换为子class