有沒有一種方法來編程訪問方法內定義的變量(任何方法,靜態或不)?在調試代碼時,IDE如何顯示它們?有沒有辦法獲得一個java方法中聲明的所有變量的列表?
回答
您可能會喜歡閱讀this它很好地解釋了這一點。你正在尋找的位是RemoteStackFrame,這就是事物如何可以得到的東西目前在範圍內
它是一個複雜的主題,但我希望這有助於。
我不知道其他的IDE,但是Eclipse使用The Abstract Syntax Tree (AST)
如果你使用Eclipse,你可以使用提供與Eclipse JDT API。如果您要創建Plugin項目,這些將可用。
IDE通常使用一個調試API的組合,比如由[Java Platform Debugger Architecture] [1]提供的調試API,它是關於它正在調試的代碼結構的知識。
讀取本地變量的值(即使在調試時),也要求使用調試信息編譯類文件。在Java中(和許多其他語言一樣),必須顯式生成調試信息,以便在運行時訪問它。特別是局部變量和從字節碼到源行號的映射。
[JDI] [2] api相當容易實現一個簡單的調試器。但是,如果你正在尋找的是某種局部變量的反映,那麼你運氣不好。
我唯一能想到的最後一種情況是使用某種字節碼操作庫,如[BCEL] [3]或[ASM] [4],並在加載它之前修改字節碼以允許您訪問運行時的變量值。
這肯定會減慢代碼並且難以實現。如果你退後一步思考,最終可能會更容易避免這個問題。
(抱歉錯位鏈接,但StackOverflow的是限制的鏈路的數目)
[1]:HTTP:// java.sun.com/javase/technologies/core/toolsapis/jpda/ [2 ]:http://java.sun.com/javase/6/docs/jdk/api/jpda/jdi/index.html [3]:http://jakarta.apache.org/bcel/ [4] :http:// asm.ow2.org/
- 1. 有沒有辦法在Java中聲明一個「友好」的方法?
- 2. Jenkins:有沒有辦法獲得所有項目URL的列表
- 3. 有沒有辦法獲得一個類的變量和函數列表
- 4. 有沒有辦法訪問所有PHP變量的列表?
- 5. Flash - 有沒有辦法獲得實例變量列表?
- 6. 有沒有辦法獲得一個主題的所有訂閱?
- 7. 有沒有辦法var_dump一個變量?
- 8. 有沒有辦法用所需的大小自動聲明一個varchar2常量?
- 9. 有沒有辦法在類中獲得某種類型的所有變量?
- 10. 有沒有辦法在PHP中獲取用戶聲明的變量?
- 11. 有沒有辦法獲得SQL Server中所有當前臨時表的列表?
- 12. 有沒有辦法從它的類之外聲明一個C++保護變量?
- 13. 有沒有辦法在變量中聲明一個Groovy字符串格式?
- 14. 有沒有辦法將多個變量聲明轉換爲每行一個?
- 15. 有沒有辦法通過聲明變量來解決poly()?
- 16. 有沒有辦法將方法聲明爲Java中的新線程
- 17. 有沒有辦法獲得多個列表python的索引?
- 18. 有沒有辦法獲得solr spellcheck索引中所有單詞的列表?
- 19. 在APPLICATION中聲明所有常量變量的最佳方法
- 20. 有沒有辦法做模板聲明
- 21. 有沒有辦法聲明background-size-height?
- 22. 有沒有辦法獲得所有安裝的iPhone應用程序的列表?
- 23. 有沒有辦法得到沒有CONNECTION變量的mysqli_error?
- 24. 有沒有辦法在importee中獲得進口商變量?
- 25. 有沒有辦法獲得頁面上所有可見屬性的列表?
- 26. 有沒有辦法獲得captcha值並將其存儲在一個變量中?
- 27. 有沒有辦法在所有變更集的筆記中獲得TFS檢查?
- 28. 聲明一個沒有列定義的表變量?
- 29. 有沒有辦法讓一個頁面的所有CSS樣式變得沉默?
- 30. 有沒有辦法獲得JavaFX屬性的所有綁定?