我正在制作游戏的菜单屏幕,我想通过反射调用用户选择的相应屏幕。我有一个ArrayList包含屏幕的不同类名作为字符串 - 它们都是类“Screen”的子类(“GameScreen”,“HighScoreScreen”等等)。 Screen-class的构造函数将Game-class的一个实例作为参数 - 例如game.setScreen(new GameScreen(game));
。
我试过这个:
String classname = menuentries.get(cursorpos).getClassname();
Class<?> clazz = Class.forName(classname); //seems to work fine
Constructor<?> ctor = clazz.getConstructor(Game.class); // <- throws exception
game.setScreen((Screen)ctor.newInstance(new Object[] {game}));
但它给了我这个错误:
java.lang.NoSuchMethodException: screens.GameScreen.<init>(java.lang.Class)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getConstructor(Unknown Source)
我做错了什么?