List<Consumer<Map<String, Object>>> methods = new ArrayList<>(); ClassA rule = new ClassA (); methods.add(rule::method1); methods.add(rule::method2); methods.add(rule::method3); methods.add(rule::method4); // 异常处理 methods.forEach(method -> { try { method.accept(map); } catch (Exception e) { log.error("", e); } }); 这段代码,我如何在运行时动态获取当前执行的方法的方法名
时间: 2024-02-14 16:28:11 浏览: 85
要在运行时动态获取当前执行的方法的方法名,您可以使用Java的反射机制来实现。在您的代码中,可以通过以下步骤获取当前执行方法的方法名:
1. 获取当前执行的方法:
- 使用`Thread.currentThread().getStackTrace()`方法获取当前线程的堆栈轨迹信息。
- 通过堆栈轨迹信息,可以获取调用栈中的方法信息。
2. 获取方法名:
- 在堆栈轨迹信息中,当前执行的方法位于索引为1的位置。
- 使用`getMethodName()`来获取方法名。
下面是修改后的代码示例:
```java
List<Consumer<Map<String, Object>>> methods = new ArrayList<>();
ClassA rule = new ClassA();
methods.add(rule::method1);
methods.add(rule::method2);
methods.add(rule::method3);
methods.add(rule::method4);
// 异常处理
methods.forEach(method -> {
try {
method.accept(map);
// 获取当前执行方法的方法名
String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
System.out.println("当前执行的方法名为:" + methodName);
} catch (Exception e) {
log.error("", e);
}
});
```
在上述代码中,通过`Thread.currentThread().getStackTrace()[1].getMethodName()`获取当前执行的方法名,并将其打印出来。您可以根据实际需求对其进行进一步处理。注意,反射机制可能会带来性能开销,请谨慎使用。
阅读全文