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&lt; ?扩展GameMenu&gt;'?请注意,'GameMenu'的所有派生类都有一个带有一个参数'Settings'的构造函数。
我从方法'getDeclaredConstructor'获得NoSuchMethodExpection。
如果有人能帮助我,我将非常感激。
答案 0 :(得分:0)
所以你说:
请注意,'GameMenu'的所有派生类都有一个带有一个参数'Settings'的构造函数。
但你使用:
menuType.getDeclaredConstructor()
如果您查看the javadoc,您会看到getDeclaredConstructor()
返回“no args”构造函数(如果有的话)。
您可能希望指定构造函数参数类型:
menuType.getDeclaredConstructor(Settings.class)