如何在 Eclipse 的变量视图中禁用逻辑结构的特殊处理?
java.util.Collection实现或 的类java.util.Map通过调用相应的方法来呈现
[entrySet().]toArray(),并以树状结构显示。
相应的首选项页面是,其中和Java -> Debug -> Logical Structures的定义是预定义的,不能更改或禁用。java.util.Collectionjava.util.Map
每当代码在调试模式下进入我的集合类时,它都会立即尝试toArray()在后台调用(1)(可能是由于变量视图this中存在节点)。然而,在某些时候,班级还没有做好准备,就会崩溃。
我完全意识到像这样的方法toArray()应该没有副作用,并且在我当前正在从事的项目中,我可以安全地将它们留空以用于开发阶段(或修改它们,这样它们就不会伤害我),但是我想用“日食方式”来处理这个问题。
因此,如果例如toArray()需要调试自身的代码,情况会更糟(基本上是不可避免的)。
(1)确认码
@Override
public Object[] toArray() {
new Exception("toArray was called").printStackTrace(System.out);
return super.toArray();
}
Run Code Online (Sandbox Code Playgroud)
然而,生成的堆栈跟踪完全被破坏了;我没有toArray()在第 45 行调用它Testing(我什至没有这样的对象引用),但这是我在 EclipsetoArray()启动时调试的行。
@Override
public Object[] toArray() {
new Exception("toArray was called").printStackTrace(System.out);
return super.toArray();
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,“日食方式”并不是禁用现有功能,而是用另一个更精确的功能覆盖它。
特别是,这意味着在已经提到的首选项页面中添加另一个定义,该定义指的是比 更精确的类型java.util.Collection(SAXParser.CursorObject为了这个示例而忽略匿名内部类型 - 实际上必须使用它的超类)。
这将切断对toArray()的所有实例的不需要的调用SAXParser.CursorObject,但对 的所有其他实例保留相同的行为java.util.Collection。
所以,简而言之:
Java -> Debug -> Logical Structures。Add...。| 归档时间: |
|
| 查看次数: |
2810 次 |
| 最近记录: |