java - 不使用 getDeclaredMethod 接收 Java 方法

标签 java reflection initialization

我希望在子类中初始化一个 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/

相关文章:

c++ - 在头文件中初始化常量静态数组

java - 如何只读取文件中的 double 值

java - Bukkit 检查玩家的库存

java - 在 Java 中转换可为 null 的整数值(Short、Long 等)

使用反射 $foo->$bar() 时性能中断

java - 如何区分 Java 中的 Varargs 和 Array 类型

c++ - 如何正确初始化不可默认构造的类成员?

c++ - C++ CRTP初始化

Java正则表达式删除所有非字母数字字符,除了空格

Java - 反射 - 如何使用反射获取@RequestHeader值