有沒有一種方法來編程訪問方法內定義的變量(任何方法,靜態或不)?在調試代碼時,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. 有沒有辦法獲得一個類的變量和函數列表
- 3. 有沒有辦法訪問所有PHP變量的列表?
- 4. 有沒有辦法var_dump一個變量?
- 5. 有沒有辦法在類中獲得某種類型的所有變量?
- 6. 有沒有辦法獲得SQL Server中所有當前臨時表的列表?
- 7. 有沒有辦法從它的類之外聲明一個C++保護變量?
- 8. 有沒有辦法在變量中聲明一個Groovy字符串格式?
- 9. 有沒有辦法獲得多個列表python的索引?
- 10. 在APPLICATION中聲明所有常量變量的最佳方法
- 11. 有沒有辦法獲得solr spellcheck索引中所有單詞的列表?
- 12. 有沒有辦法聲明background-size-height?
- 13. 有沒有辦法獲得所有安裝的iPhone應用程序的列表?
- 14. 有沒有辦法得到沒有CONNECTION變量的mysqli_error?
- 15. 有沒有辦法在importee中獲得進口商變量?
- 16. 有沒有辦法獲得captcha值並將其存儲在一個變量中?
- 17. 聲明一個沒有列定義的表變量?
- 18. 有沒有辦法在所有變更集的筆記中獲得TFS檢查?
- 19. 有沒有辦法讓一個頁面的所有CSS樣式變得沉默?
- 20. 有沒有辦法在stackview中有一個全局變量?
- 21. 有沒有辦法獲得DOMElement的所有屬性?
- 22. 有沒有辦法在Netbeans中打印一個變量的值?
- 23. 有沒有辦法來聲明一個行動結果?
- 24. 有沒有辦法爲Templatized函數聲明一個typename?
- 25. 有沒有辦法掛鉤Java方法?
- 26. 有沒有辦法改變方法參數列表intellij?
- 27. PHP:有沒有辦法獲得方法的返回類型?
- 28. 有沒有辦法定義在方法聲明中兩個泛型類型
- 29. 有沒有辦法讓在Eclipse中排列所有的局部變量?
- 30. 有沒有辦法在遊標聲明的ORDER BY子句中有一個變量?