我想知道java中是否有办法找出调用某个静态方法的类/对象。
例子:
public class Util{
...
public static void method(){}
...
}
public class Caller{
...
public void callStatic(){
Util.method();
}
...
}
我可以查出是否Util.method
是从Caller
课堂上调用的吗?
我想知道java中是否有办法找出调用某个静态方法的类/对象。
例子:
public class Util{
...
public static void method(){}
...
}
public class Caller{
...
public void callStatic(){
Util.method();
}
...
}
我可以查出是否Util.method
是从Caller
课堂上调用的吗?
您可以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());
}
...
}