我使用java反射從類中獲取方法(加載了這些類)。現在我想要獲取這些方法的調用層次結構。如何在eclipse IDE中使用調用層次結構選項那?任何例子或鏈接????獲取使用反射方法的調用層次結構
回答
建議的解決方案是使用Thread.currentThread().getStackTrace()
爲了獲得當前跟蹤呼叫者。
但是,您希望獲取此信息不是針對當前正在執行的方法,而是針對任何類中的任何方法。這不容易做到。我認爲你必須使用字節碼實用程序檢查類路徑中的所有類並匹配調用指令。有些東西你會花費太多時間,而且我非常肯定它不是必需的,除非你正在開發一個IDE。
無論如何,您可以獲取Eclipse或NetBeans源代碼並查看它是如何在其中實現的。
+1 - 我認爲這是他問的...和我同意這會很難實現,而且運行起來很昂貴。 – 2010-04-16 07:08:47
您可以使用StackTrace對象。
但是這對我來說看起來很脆弱。最好避免這種邏輯...爲什麼不把呼叫者作爲參數傳遞給方法?
我需要它的一些檢查purpose.How我可以使用StackTrace對象的TIS ??(沒有得到你) – Steven 2010-04-16 05:50:07
在位於層次結構根部的方法中拋出異常。然後你可以捕捉到異常和printStackTrace()
。
我相信會有比這更清潔的解決方案。但是這也會起作用。
StackTraceElement[] stackTrace = new Throwable().getStackTrace();
- 1. Ruby方法調用層次結構
- 2. 使用IMetaDataImport獲取基類層次結構方法EnumMethods
- 3. vs2010。調用層次結構。有沒有辦法一次爲所有方法生成調用層次結構?
- 4. 爲動態調用的方法生成調用層次結構
- 5. 使用反射的遞歸方法調用由於層次結構中的抽象類而失敗
- 6. PHP調用層次結構
- 7. 無法獲取父類調用子類方法 - 使用反射
- 8. c#使用反射從底層類型獲取方法名稱
- 9. 獲取C#代碼邏輯的圖形表示 - 方法調用層次結構
- 10. 使用反射獲取OrderBy方法
- 11. 使用反射獲取方法描述
- 12. 使用反射獲取類方法
- 13. 使用Java反射類獲取方法
- 14. Automapper:映射層次結構
- 15. 獲取用於按層次結構表結構的DAO
- 16. 使用反射的Java調用方法
- 17. 使用反射的調用方法
- 18. 使用反射的調用方法
- 19. 在類層次結構中的方法調用練習
- 20. 如何瀏覽Xcode 4中的方法調用層次結構?
- 21. 在層次結構外調用對象的超類方法
- 22. 如何使用反射來重構按名稱獲取方法?
- 23. 構造函數調用層次結構
- 24. 反射方法調用構造函數多次
- 25. findContours使用層次結構
- 26. 從字節代碼獲取調用層次結構(在Eclipse中)
- 27. 如何在Fortran中獲取子例程調用層次結構?
- 28. 在Eclipse中獲取調用層次結構CDT
- 29. 如何簡化導致鏈式方法調用的層次結構類結構?
- 30. 字段的IntelliJ調用層次結構
http://stackoverflow.com/questions/421280/in-java-how-do-i-find-the-caller-of-a-method-using-stacktrace-or-reflection – 2010-04-16 05:37:12
@Michael - 我不這麼認爲。我認爲他想要一個電話TREE ... – 2010-04-16 07:07:12