如何禁用eclipse Variables View中的逻辑结构的特殊处理?
通过调用相应的类来呈现实现java.util.Collection
或java.util.Map
的类
[entrySet().]toArray()
方法,并以树形结构显示。
相应的偏好设置页面为Java -> Debug -> Logical Structures
,java.util.Collection
和java.util.Map
的定义已预先定义,无法更改或停用。
每当代码在调试模式下进入我的集合类时,它会立即尝试在后台调用toArray()
(1)(可能是由于Variables View中存在this
节点) 。但是,在某些方面,该课程还没有为它准备好并崩溃。
我完全清楚像toArray()
这样的方法应该没有副作用,而且在我正在进行的项目中,我可以安全地将它们留空以用于开发阶段(或者修改它们以便它们不要伤害我),但我想处理这个'日食方式'
因此,如果需要调试toArray()
本身的代码,那将会更糟糕(基本上是不可避免的)。
(1)确认码
@Override
public Object[] toArray() {
new Exception("toArray was called").printStackTrace(System.out);
return super.toArray();
}
然而,最终的堆栈跟踪完全被破坏;我不会在toArray()
的第45行调用Testing
(我甚至没有这样的对象引用),但这是我在eclipse的toArray()
启动时调试的行。
java.lang.Exception: toArray was called
at prv.izruo.<project>.util.SAXParser$CursorObject$1.toArray(SAXParser.java:511)
at prv.izruo.<project>.test.Testing.read(Testing.java:45)
at prv.izruo.<project>.test.Testing.main(Testing.java:36)
答案 0 :(得分:2)
&#39; eclipse方式&#39;在这种情况下,不是禁用现有功能,而是使用另一个更精确的功能覆盖它。
特别是这意味着在已经提到的首选项页面中添加另一个定义,它指的是比java.util.Collection
更精确的类型,让我们说SAXParser.CursorObject
(只是忽略匿名内部类型这个例子的缘故 - 实际上必须使用它的超类。)
这会针对toArray()
的所有实例切断对SAXParser.CursorObject
的不需要的调用,但会为java.util.Collection
的所有其他实例保留相同的行为。
所以,简而言之:
Java -> Debug -> Logical Structures
。Add...
。答案 1 :(得分:1)