で独自のプライベートメソッドを呼び出す前に、私は多くのif-elseステートメントを持つSwingクラスを持っていました。 javaリフレクションを使用してすべてのif-elseを削除した後、独自のメソッドを正常に呼び出すことができます。しかし、私はまだメソッドにパラメータを渡すことはできません。以下のコードをActionEventパラメータを渡して動作させるには?Javaは固定パラメータ
public void actionPerformed(ActionEvent e) {
try {
//Method method = this.getClass().getDeclaredMethod(e.getActionCommand());
Method method = this.getClass().getMethod(e.getActionCommand());
method.invoke(this);
} catch (IllegalArgumentException e1) {
e1.printStackTrace();
} catch (IllegalAccessException e1) {
e1.printStackTrace();
} catch (InvocationTargetException e1) {
e1.printStackTrace();
} catch (SecurityException e1) {
e1.printStackTrace();
} catch (NoSuchMethodException e1) {
e1.printStackTrace();
}
}
public void generate(ActionEvent e){
System.out.println("Generating");
}
私は、私を試してみましたこの例外を取得します:java.lang.NoSuchMethodException:com.upd.ui._Summary.generate() – Reusable
@Reusable: 'getMethod()'呼び出しで**例外を受け取り、 'invoke (getMethod()だけがこれを投げることができます)!あなたはあなたのタイトルに 'private'と言いますが、コードにはプライベートメソッドはありません。 **あなたのメソッドが実際に 'private'の場合、' getMethod() 'として' getDeclaredMethod() 'を使用する必要があります** publicメソッドのみを見つける*。 –
あなたは私の頭の中の他の質問に答えてくれます。私はこの方法を非公開にしたかったのです。なぜなら、これを他人に公開することが、なぜこの方法が公開されたのかという疑問を必ず生み出すからです。ありがとう! – Reusable