之前,我有一个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