通过反射使用单参数构造函数实例化类

时间:2013-08-16 20:10:42

标签: java reflection

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

我做错了什么?

0 个答案:

没有答案