Java方法如何检索与该特定方法相关的方法对象?(JAVA)

0 java methods

我正在编写一个带有以下签名的Java方法.

void Logger(Method method,Object [] args);

如果方法(例如ABC())调用此方法Logger,它应该检索封装自身数据(ABC())的Method对象并将其作为参数传递.

方法如何检索存储有关该方法的所有信息的Method对象?

一个简单的方法是我使用Method [] methods = ExampleClass.Class.getMethods(); 并使用正确的名称在整个数组中搜索Method.(这是非常低效的).此外,如果两个或多个方法具有相同的名称,那么我将不得不检索它们的参数类型(以区分它们)并为每个方法使用不同的代码.这既低效又痛苦.

有没有更好的办法?

谢谢您的帮助.

Bal*_*usC 5

不要这样做.而是从堆栈中获取方法名称.

public void log(Object object) {
    String methodName = Thread.currentThread().getStackTrace()[2].getMethodName();
    // ...
}
Run Code Online (Sandbox Code Playgroud)

然而,这是相当昂贵的,这就是为什么大多数自我尊重的日志框架提供打开/关闭它的选项(我建议使用而不是自己生成一个).