4

我想知道java中是否有办法找出调用某个静态方法的类/对象。

例子:

public class Util{
 ...
 public static void method(){}
 ...
}

public class Caller{
 ...
 public void callStatic(){
   Util.method();
 }
 ...
}

我可以查出是否Util.method是从Caller课堂上调用的吗?

4

1 回答 1

5

您可以Thread.currentThread().getStackTrace()Util.method.

Util.method在你可以做这样的事情之前得到最后一个电话:

public class Util {
 ...
 public static void method() {
    StackTraceElement[] st = Thread.currentThread().getStackTrace();
    //st[0] is the call of getStackTrace, st[1] is the call to Util.method, so the method before is st[2]
    System.out.println(st[2].getClassName() + "." + st[2].getMethodName());
 }
 ...
}
于 2012-06-13T12:34:43.933 回答