[英]Java: Best way to get object from extended sub-class
因此,我可能以错误的方式对程序进行了强加,但是我找不到如何以一种漂亮的方式来做我想做的事情。 我也找不到如何在Google中正确搜索的方法,如果此问题已经得到解答,对不起。 这是我所拥有的:
我有一个抽象类GameWorld ,它将被扩展到几个不同的gameWorlds中,例如GameAWorld , GameBWorld ...。我还有另一个抽象类GameRenderer ,它将负责这些世界的渲染,并且还将扩展到GameARenderer , GameBRenderer .. 。
我的问题是,当创建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.