之前,我有一個Swing類,它有很多if-else語句。在通過使用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()'調用和** not **對invoke()調用(只有'getMethod()'可以拋出這個)!你在標題中提到'private',但你的代碼沒有私有方法。 **如果你的方法實際上是'private',那麼你**必須**使用'getDeclaredMethod()',因爲'getMethod()'只會*查找公共方法。 –
你只是幫我解答了我腦海中的另一個問題。我想將這種方法設置爲私有方式,因爲將這種方法暴露給其他方法肯定會對此方法公開的原因產生進一步的問題!謝謝! – Reusable