我想知道在java中是否有办法找出调用某个静态方法的类/对象。
示例:
public class Util{
...
public static void method(){}
...
}
public class Caller{
...
public void callStatic(){
Util.method();
}
...
}
我能否知道Util.method
类是否调用Caller
?
答案 0 :(得分: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());
}
...
}