我想知道 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());
 }
 ...
}

关于JAVA:了解调用静态方法的方法/类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11014877/

10-14 11:31