2012-06-13 113 views
4

我想知道是否有辦法在Java中找出調用某個靜態方法的類/對象。JAVA:知道從哪裏調用靜態方法的方法/類

例子:

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

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

我可以找出Util.methodCaller類叫什麼?

+3

類名應以大寫字母:) – Autar

+0

開始我不知道我在哪裏得到了小​​寫的習慣(可能動作) :)我正在使用大寫命名@work,但我的想法設置在較低。 – CosminO

+0

這樣比較好。 :) – trumank

回答

5

您可以在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()); 
} 
... 
} 
+1

我認爲提問者比類名和方法更需要對象本身。 – trumank

+0

如果他想要的話,他並沒有真正問過這個問題:) – tibtof

+0

我的提問可能是錯誤的,是的。這是我真正想要的。有沒有辦法知道具體的對象? :) – CosminO