我有class X
,在它裏面有一個叫做doStuff()
的static
方法,而且我有幾個其他的類,其中有些方法因爲某些原因調用doStuff()
。有沒有辦法在doStuff()
中使用打印方法打印從中調用哪些方法和類?如何獲取調用靜態方法的類和方法?
1
A
回答
4
是:new Throwable().getStackTrace()
返回StackTraceElement
的數組。索引號碼1是您的來電者。
+1
+1:或'Thread.currentThread()。getStackTrace()' – 2011-12-27 12:08:02
+0
謝謝,但我使用的索引是3.索引1給我的名字的A類和doStuff()。 – nyxz 2011-12-27 13:16:22
0
您不需要強制和Exception
爲了做到這一點。選中此類似的問題:
package test;
class TestCaller {
public static void meth() {
System.out.println("Called by class: " + sun.reflect.Reflection.getCallerClass(2));
}
}
public class Main {
public static void main(String[] args) {
TestCaller.meth();
}
}
輸出:
Is there a way to dump a stack trace without throwing an exception in java?
2
/**
* <li> 0 dumpThreads
* <li> 1 getStackTrace
* <li> 2 getCallingMethodName
* <li> 3 [calling method]
*
* @return
*/
private String getCallingMethodName() {
return Thread.currentThread().getStackTrace()[3].getMethodName();
}
1
可以使用獲得致電類 「的類調用:類test.Main」
相關問題
- 1. 如何調用靜態方法的類
- 2. 如何調用類的靜態方法?
- 3. 調用靜態類方法
- 4. 從靜態基類方法調用靜態派生類方法
- 5. 如何調用類/靜態方法
- 6. 如何從靜態main()方法調用內部類的方法
- 7. 如何從靜態方法調用非靜態方法android
- 8. 如何從靜態方法調用非靜態方法
- 9. 如何從靜態方法調用非靜態方法?
- 10. 如何從一個靜態方法調用非靜態方法
- 11. 如何從靜態方法調用非靜態方法?
- 12. 如何從同一類的靜態方法調用非靜態方法?
- 13. 調用類類型的靜態方法
- 14. 如何用靜態方法來調用靜態類(UnitOfWork case)?
- 15. 獲取靜態方法內的非靜態方法名稱
- 16. 使用方法調用靜態方法?
- 17. 臨時類。方法調用,用於非靜態類/方法
- 18. 調用一類的非靜態方法
- 19. 調用靜態方法的一類
- 20. 調用C類的靜態方法#
- 21. 調用其他類的靜態方法
- 22. Java類和靜態方法
- 23. PHP和靜態類方法
- 24. 從靜態方法調用UserControl方法
- 25. 如何從一個子類的靜態方法獲取類?
- 26. 靜態類和靜態方法
- 27. 從非靜態類動態調用非靜態方法的最簡單方法?
- 28. 使用此方法調用靜態方法。方法vs類名。方法
- 29. 使用類型調用靜態方法
- 30. 從Python中的靜態方法調用非靜態方法
請不要」不要這樣做! (可能除了調試,但即使那裏測試可能會更好。) – 2011-12-27 13:04:21