我希望在子类中初始化一个 java 方法数组,作为类字段,如下所示
void callme() {System.out.println("hi!");}
Method[] actions = new Method[] {&callme,&callme};
并在父类中调用此数组中的所有方法,如下所示:
for (meth:actions) {meth.invoke();}
但是目前我找不到一种方法来隐式初始化操作数组,而不是通过构造函数。由于未处理的异常,以下内容给了我一个错误:
Method[] actions = new Method[] {
this.getClass().getDeclaredMethod("count")
};
如上所述,当将此数组显式初始化为字段时(而不是在构造函数中),我无法捕获异常。
我是java反射的新手,所以这可能是一个明显的问题,但我在谷歌上仍然没有找到答案,任何帮助将不胜感激。
谢谢
附注
正如斯科特下面猜测的那样,我“希望父类(super class)调用子类中定义的一组特定方法”。
最佳答案
您确定反射(reflection)是正确的做法吗?通常,由多个匿名类实现的接口(interface)会是更好的风格。
您可以编写一个初始化程序 block 以便能够在初始化期间捕获异常。
为什么不使用 getMethod()?
关于java - 不使用 getDeclaredMethod 接收 Java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/642532/