java获取方法调用方的方法名
我有两种方法。其中一个,我称之为第二个。在第二个示例中,我需要知道调用这个(第二个)示例的方法的名称
这可能吗
public class Test {
public void foo() {
String m = getCallingMethodName();
}
public String getCallingMethodName() {
return callerMethodName; //should return "foo"
}
}
# 1 楼答案
您可以使用以下选项:
但是,根据
Thread#getStackTrace()
的Javadocs,这不能保证返回准确的结果:如果您想要在所有JVM实现上获得准确的结果,您可能应该重新考虑您的程序设计
# 2 楼答案
这里的其他答案都是正确的,但我想我需要补充一点注意事项。如果您使用反射调用东西,这将不起作用,而且如果您有任何AOP连接点/代理等,它可能无法获得正确的堆栈帧
例如
# 3 楼答案
使用此选项,您可以获得当前方法名称:
# 4 楼答案
可以在当前线程上使用getStackTrace()方法。这将以相反的顺序返回调用堆栈
# 5 楼答案
此方法按调用顺序显示方法调用层次结构的3个最近点,同时忽略包括以下方法本身的2个最新方法。这对于捕获程序单元中多条路径访问同一位置的方法层次结构非常有用