C#是我最熟悉的语言,但在工作时使用Java.我想你可以说我对使用Visual Studio IDE很满意.我喜欢它的调试器之一是我可以为任何表达式放置监视变量(Eclipse中的"表达式").因此,我可以在调试时查看公共或非公共特定字段的值,调用方法等,没有问题.
我似乎不能在Eclipse中做同样的事情.我不得不求助于为字段调用相关的getter方法(假设它有一个).如果它没有,我要么暂时添加一个,所以我可以查看它,记得在我完成时删除它或者我只是SOL.
如何在一个私有字段上为对象设置监视表达式?或者我只是做错了,我必须制作特殊的表达方式来查看它们?
(或者,有没有更好的方法来获取我想要的信息?)
例如,
我有一个HttpServletRequest
想要留意的requestURI
.如果我只是观察请求变量,它会列出很多字段,而且信息太多了.我只对对象中的一件事感兴趣,所以为了最小化这个,我想为这一件事添加一个表达式.
字段名称显然是requestURI
这样我添加了表达式:request.requestURI
.Eclipse抛出一个错误,说它不是一个字段(它是,它只是不公开).我不得不直接去场地,而是去吸气器:request.getRequestURI()
这很好.但我不能总是指望吸气剂可用.
变量视图
表达式视图
Eclipse评估表达式,考虑私有/受保护字段Declared Type
,而不是Actual Type
.
例:
Number n1 = new Integer(1000);
Integer n2 = new Integer(1000);
Run Code Online (Sandbox Code Playgroud)
表达式:
n1.value can't be evaluate
n2.value returns 1000, perfectly
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用DetailFormatter
(右键单击变量> New Detail Formatter).
当显示类型对象的文本表示时,Eclipse将使用此表达式而不是toString()方法(例如,在"变量视图"中).
你的DetailFormatter
(for ApplicationHttpRequest
)可以是:
requestURI
Run Code Online (Sandbox Code Playgroud)
要么
"URI: " + requestURI + "\n" +
"Path: " + servletPath
Run Code Online (Sandbox Code Playgroud)
如果字段是private
或者protected
,eclipse表达式将正确评估无关紧要.但变量的范围很重要.
如果我错了,请纠正我.
requestURI
是一个受保护的字段,org.apache.catalina.core.ApplicationHttpRequest
其中实现了HttpServletRequest.在您的情况下,变量request
的类型为HttpServletRequest,您尝试访问HttpServletRequest.requestURI
并且此字段不存在且eclipse失败.我认为这是正常的.如果你做正确的演员,表达式将正确评估.
归档时间: |
|
查看次数: |
3325 次 |
最近记录: |