我想知道是否有辦法知道在運行時正在執行的方法名稱?如何在Java中使用該方法查找方法名稱?
例如,private void doSomething (String s)
方法裏面,我想知道我執行doSomething (String s)
方法。
我想知道是否有辦法知道在運行時正在執行的方法名稱?如何在Java中使用該方法查找方法名稱?
例如,private void doSomething (String s)
方法裏面,我想知道我執行doSomething (String s)
方法。
由於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
}
}
System.out.println(new Exception().getStackTrace()[0].getMethodName());
請參見
Method lastMethodCalled = this.getClass().getEnclosingMethod();
這真的不是你的代碼應該要求的東西。我非常建議重新考慮你的設計,這樣你就不需要它了。 – 2011-01-09 20:28:04
如果你在這個方法裏面,你已經知道這個名字了,對吧? :)如果你想知道調用方法的名字,Jigar的答案就是你正在尋找的。只需使用1而不是0作爲索引。 – 2011-01-09 20:28:35