繁体   English   中英

Java:从扩展子类获取对象的最佳方法

[英]Java: Best way to get object from extended sub-class

因此,我可能以错误的方式对程序进行了强加,但是我找不到如何以一种漂亮的方式来做我想做的事情。 我也找不到如何在Google中正确搜索的方法,如果此问题已经得到解答,对不起。 这是我所拥有的:

我有一个抽象类GameWorld ,它将被扩展到几个不同的gameWorlds中,例如GameAWorldGameBWorld ...。我还有另一个抽象类GameRenderer ,它将负责这些世界的渲染,并且还将扩展到GameARendererGameBRenderer .. 。

我的问题是,当创建GameARenderer (在另一个类中,而不是GameAWorld)时,它会收到一个普通的GameWorld(实际上是GameAWorld)。 我需要从游戏世界里,这是不是在游戏世界得到一个对象。 因此,我现在在GameARenderer中所做的是:

Obj chair = ((GameAWorld)world).getChair();

因为如果我只是简单地执行world.getA(),而没有强制转换,GameWorld将没有getA()方法。

我相信这听起来可能令人困惑,所以如果没有人了解,我将在以后尝试澄清它。

如果没有代码可以解决,请随时提出对我的体系结构的更改的建议。

作为一个简短但希望足够好的示例,我将尽力帮助您。

public interface Drawable {
    void draw(Graphics g);
}

public class GameWorld {
    List<GameObject> gameObjects;
    List<GameObject> getGameObjects() {...}
}

public class GameAWorld extends GameWorld {...}

public class GameObject implements Drawable {
    // this could be abstract too. Whatever suits your needs.
    @Override
    public void draw(Graphics g) { ... }
}

//inside a renderer
List<GameObject> gameObjects = gameWorld.getGameObjects();
for (GameObject go : gameObjects)
    go.draw(g);

我就是那样做的。 有人建议我拍打起来像快速一样。 可能不是100%正确,但您应该明白这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM