IntelliJ更改为调试模式的字符串(变量视图)

ari*_*nai 5 java debugging intellij-idea

如果我重载toString(),IntelliJ中的调试器将Object.toString()在变量选项卡中向我显示相关对象附近的结果.

如果toString超载return "Test1: This is toString overload";:

在此输入图像描述

有时,我想在调试中看到的与一般toString过载不同.我知道可以为特定类型/类/等设置另一个表达式,但仅限于设置.

有没有办法(全局)设置一个任意函数名称,该函数名称优先于toString何时存在这样的函数?

例如:
如果Object.toDebuggerString()存在则使用它,否则 - 使用Object.toString().

class Test1 {
    @Override
    public String toString() {
        return "Test1";
    }
}

class Test2 {
    @Override
    public String toString() {
        return "Test2";
    }

    public String toDebuggerString() {
        return "Testing debugging mode";
    }
}
Run Code Online (Sandbox Code Playgroud)

ari*_*nai 3

根据其他答案,我想到创建一个静态类,该类将为调试器提供正确的调试字符串

所以我创建了这样的类,它减少了配置这些数据视图所需的步骤,并使其更加灵活和舒适。

步骤

  1. Objects在调试自定义数据视图中设置常量表达式。[*]
  2. 将我制作的包/类扔到你的代码附近
  3. 为相关数据类型创建toDebugString()方法,如果存在,该类将提供它。否则,如果toString()被覆盖,它将使用它;如果没有,它将使用默认的Object.toString().

[*] 此步骤只需执行一次,因为 IntelliJ 将其保留在全局设置中。

截图

在此输入图像描述 在此输入图像描述

如何获取它以及更多示例

在我的 GitLab 上公开可用 - IntelliJ-CustomDebugDataView

优点

  1. 无需为我们正在使用的每种不同数据类型显式设置数据视图。
  2. 所有对象的数据视图都是相同的,因此可以轻松跟踪和控制您想要查看的内容。
  3. 如果您想使用它(一种方法),只需对代码进行最少的更改。