有没有一种方法来编程访问方法内定义的变量(任何方法,静态或不)?在调试代码时,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属性的所有绑定?