2017-04-23 37 views
0
public class MainMenu extends GameMenu{ 

Table table; 

Skin skin; 

public MainMenu(){super();}; 

protected void loadWidgets(){ 

    skin.add("playButton", com.mygdx.game.LIBGDXwrapper.gameGUI.widgets.MainMenuWidgets.loadPlayButton(table)); 
    table.row(); 
    skin.add("hightScoreButton", com.mygdx.game.LIBGDXwrapper.gameGUI.widgets.MainMenuWidgets.loadHighScoreButton(table)); 
    //table.row(); 
} 

protected void loadInputlisteners(){ 
    skin.get("playButton", Button.class); 

} 

@Override 
public String toString(){ 
    return "Menu"; 
} 
} 





public abstract class GameMenu extends Stage{ 

private Settings gameSettings; 

//public GameMenu(Settings gameSettings){ 
// this.gameSettings = gameSettings; 
//} 

public GameMenu(){}; 

protected abstract void loadWidgets(); 

protected abstract void loadInputlisteners(); 

} 



private static enum GameMenus {MainMenu(MainMenu.class); 
    private final Class<? extends GameMenu> menuType; 

    GameMenus(Class<? extends GameMenu> menuType){ 
     this.menuType = menuType; 
    } 

    public Class<? extends GameMenu> createInstance(Settings gameSettings){ 
     GameMenu gui = menuType.getDeclaredConstructor().newInstance(); 
    } 
}; 

我一直在努力使這項工作現在小時,是有可能得到的一個實例來自'GameMenu'的派生類,類類型爲Class <?擴展GameMenu>'?請注意,'GameMenu'的所有派生類都有一個帶有一個參數'Settings'的構造函數。如何實例化一個類與類的類型,使用擴展類的構造函數與方法「getDeclaredConstructor」,Android Studio中

我從方法'getDeclaredConstructor'獲取NoSuchMethodExpection。

如果有人能幫助我,我將不勝感激。

+0

可能XY的問題類型的問題 –

+0

@DontKnowMuchButGettingBetter你能否詳細說明,請? – Joao

+0

這段代碼的目的是什麼?你想用它做什麼? –

回答

0

所以你說:

Note that all derived classes of 'GameMenu' have a constructor that with one argument 'Settings'.

但你使用:

menuType.getDeclaredConstructor() 

如果你看一看the javadoc,你會看到getDeclaredConstructor()返回 「無參數」 的構造函數(如有)。 你可能想指定構造函數參數類型:

menuType.getDeclaredConstructor(Settings.class) 
+0

主要問題是我需要添加一個圍繞getDeclaredConstructer()方法的嘗試,android工作室要求它。不管怎樣,謝謝你。 – Joao

相關問題