-1

说,我有一些 Java 代码

public static void method1(){
...//method body
method2();
}
public static void method2(){
...//method body
}

我希望 method2 能够作为字符串知道调用它的方法。例如,在这种情况下,如果运行了 method1,则调用 method2,method2 可以打印出它是从 method1 调用的。

提前致谢!

4

4 回答 4

4
StackTraceElement[] ste = Thread.currentThread().getStackTrace();

数组的最后一个元素表示堆栈的底部,它是序列中最近的方法调用。

于 2013-08-02T15:00:33.740 回答
0
StackTraceElement[] stackElements = Thread.currentThread().getStackTrace();
System.out.println(stackElements[1].getMethodName());

您可能必须检查您想要的索引。

于 2013-08-02T15:04:24.567 回答
0

我认为你需要这样的东西:

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]);          
    }
}
于 2013-08-02T15:04:52.557 回答
0

尝试这个

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());
    }
}
于 2013-08-02T15:07:15.923 回答