[英]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.