在我目前的項目,我有一對夫婦的繼承自一個抽象類變量類。其中一個相似之處在於,它們都需要根據抽象類的擴展來調用新的特定控制器類。這些類也有許多相似之處,其中之一是它們保存哪個對象構造它們。我可以改變類的變量在抽象類
現在我試圖讓一個抽象類,這些控制器類,和我做,將創建它們的抽象類的變量。當現在的問題在於是,我需要我的這個控制器類的實現抽象類的創建者更改爲控制器類
這聽起來真的令人困惑的實施。我將寫下一個例子:
public abstract class ObjectController {
protected GameObject gameObject;
protected Game gameVersion;
public ObjectController(GameObject object, Game gameVersion){
this.gameObject = object;
this.gameVersion = gameVersion;
}
public abstract void nextAction();
}
所以這是我的抽象Controller類,我會寫下來擴展該控制器類的一個實例。這個類需要保存一個擴展抽象GameObject類的對象。雖然,我很確定,在構造這個類之後,'gameObject'變量充滿了GameObject的特定擴展,但我想用這個變量做一些事情,只有這個擴展可以做到。
public class PlayerController extends ObjectController {
int speed = 0;
public PlayerController(Player player, Game gameVersion{
super(player, gameVersion)
}
public void updateSpeed(){
speed = player.getSpeed() // example of a method only the Player class has
}
}
我該如何做到這一點,而不需要不斷地將player變量轉換爲Player類呢?
謝謝你的工作!後續問題雖然:如果我在抽象的GameObject類中存儲該控制器類(我試圖將GameObject類保存在Controller類中,反之亦然)如何更改GameObject擴展中的泛型?我現在將它作爲原始類型保存在我的抽象類中,並嘗試在擴展中定義泛型,但這給了我一個錯誤。 – Typhaon
你想保留對GameObject控制器的引用,但是在'GameObject'級別? – Zircon
是啊,有點..我認爲這是最簡單的方法,但我願意提供建議。此刻,所有gameObjects都存儲在一個Set中,並且我遍歷每一幀,請求getController()。nextAction(); – Typhaon