禁用“变量视图”中的逻辑结构显示

时间:2017-12-30 21:49:15

标签: java eclipse

如何禁用eclipse Variables View中的逻辑结构的特殊处理?

摘要

通过调用相应的类来呈现实现java.util.Collectionjava.util.Map的类 [entrySet().]toArray()方法,并以树形结构显示。

相应的偏好设置页面为Java -> Debug -> Logical Structuresjava.util.Collectionjava.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)

2 个答案:

答案 0 :(得分:2)

&#39; eclipse方式&#39;在这种情况下,不是禁用现有功能,而是使用另一个更精确的功能覆盖它。

特别是这意味着在已经提到的首选项页面中添加另一个定义,它指的是比java.util.Collection更精确的类型,让我们说SAXParser.CursorObject(只是忽略匿名内部类型这个例子的缘故 - 实际上必须使用它的超类。)

这会针对toArray()的所有实例切断对SAXParser.CursorObject的不需要的调用,但会为java.util.Collection的所有其他实例保留相同的行为。

所以,简而言之:

  1. 转到Java -> Debug -> Logical Structures
  2. 点击Add...
  3. 选择要停用的班级&#39; 。的行为。
  4. 添加说明(因为eclipse会强迫您这样做)。
  5. 插入不会伤害您的代码。

答案 1 :(得分:1)

您可以使用Show logical structures button“显示逻辑结构”按钮在视图(例如变量视图)中禁用逻辑结构。

enter image description here

按钮Show logical structures buttonavailable in


已启用

enter image description here

已禁用

enter image description here