说,我有一些 Java 代码
public static void method1(){
...//method body
method2();
}
public static void method2(){
...//method body
}
我希望 method2 能够作为字符串知道调用它的方法。例如,在这种情况下,如果运行了 method1,则调用 method2,method2 可以打印出它是从 method1 调用的。
提前致谢!
说,我有一些 Java 代码
public static void method1(){
...//method body
method2();
}
public static void method2(){
...//method body
}
我希望 method2 能够作为字符串知道调用它的方法。例如,在这种情况下,如果运行了 method1,则调用 method2,method2 可以打印出它是从 method1 调用的。
提前致谢!
StackTraceElement[] ste = Thread.currentThread().getStackTrace();
数组的最后一个元素表示堆栈的底部,它是序列中最近的方法调用。
StackTraceElement[] stackElements = Thread.currentThread().getStackTrace();
System.out.println(stackElements[1].getMethodName());
您可能必须检查您想要的索引。
我认为你需要这样的东西:
public class App
{
static public void main(String[] args) {
secondMethod();
}
public static void secondMethod() {
StackTraceElement[] ste = Thread.currentThread().getStackTrace();
System.out.println(ste[ste.length-1]);
}
}
尝试这个
public class TestClass {
public static void main(String... args) {
m1();
}
static void m1() {
m2();
}
static void m2() {
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
System.out.println(stackTrace[2].getMethodName());
}
}