0

我正在处理游戏的菜单屏幕,我想通过反射调用用户选择的适当屏幕。我有一个 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)

我究竟做错了什么?

4

0 回答 0