2011-01-09 61 views
25

我想知道是否有辦法知道在運行時正在執行的方法名稱?如何在Java中使用該方法查找方法名稱?

例如,private void doSomething (String s)方法裏面,我想知道我執行doSomething (String s)方法。

+1

這真的不是你的代碼應該要求的東西。我非常建議重新考慮你的設計,這樣你就不需要它了。 – 2011-01-09 20:28:04

+1

如果你在這個方法裏面,你已經知道這個名字了,對吧? :)如果你想知道調用方法的名字,Jigar的答案就是你正在尋找的。只需使用1而不是0作爲索引。 – 2011-01-09 20:28:35

回答

60

由於JDK1.5,你不需要一個例外,以獲得堆棧跟蹤,
你可以用Thread.currentThread().getStackTrace()得到它:

public class Test2 { 
    public static void main(String args[]) { 
     new Test2().doit(); 
    } 
    public void doit() { 
     System.out.println(
      Thread.currentThread().getStackTrace()[1].getMethodName()); // output : doit 
    } 
    } 
-2
Method lastMethodCalled = this.getClass().getEnclosingMethod();