私はゲームのメニュー画面に取り組んでおり、リフレクションを介してユーザーが選択した適切な画面を呼び出したいと考えています。画面のさまざまなクラス名を文字列として含む 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)
私は何を間違っていますか?