我想知道是否有辦法在Java中找出調用某個靜態方法的類/對象。JAVA:知道從哪裏調用靜態方法的方法/類
例子:
public class Util{
...
public static void method(){}
...
}
public class Caller{
...
public void callStatic(){
Util.method();
}
...
}
我可以找出Util.method
從Caller
類叫什麼?
我想知道是否有辦法在Java中找出調用某個靜態方法的類/對象。JAVA:知道從哪裏調用靜態方法的方法/類
例子:
public class Util{
...
public static void method(){}
...
}
public class Caller{
...
public void callStatic(){
Util.method();
}
...
}
我可以找出Util.method
從Caller
類叫什麼?
您可以在Util.method
中使用Thread.currentThread().getStackTrace()
。
爲了得到最後一次通話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());
}
...
}
類名應以大寫字母:) – Autar
開始我不知道我在哪裏得到了小寫的習慣(可能動作) :)我正在使用大寫命名@work,但我的想法設置在較低。 – CosminO
這樣比較好。 :) – trumank