gpt4 book ai didi

java - Java 方法如何检索属于该特定方法的方法对象? ( java )

转载 作者:行者123 更新时间:2023-12-01 16:40:20 31 4
gpt4 key购买 nike

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

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

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

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

一个简单的方法是我使用Method[] 方法 = ExampleClass.Class.getMethods();并在整个数组中搜索具有正确名称的方法。 (这是相当低效的)。另外,如果两个或多个方法具有相同的名称,那么我也必须检索它们的参数类型(以区分它们),并且每个方法都有不同的代码。这不仅效率低下而且痛苦。

有更好的方法吗?

感谢您的帮助。

最佳答案

别这么做。而是从堆栈中获取方法名称。

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

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

关于java - Java 方法如何检索属于该特定方法的方法对象? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4366649/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com