首页 > 解决方案 > IntelliJ 将 toString 更改为调试模式(变量视图)

问题描述

如果我重载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";
    }
}

标签: javadebuggingintellij-idea

解决方案


您可以添加自己的。

interface Debuggable {
    String toDebugString();
}

然后在调试器中右键单击一个变量 -> 自定义数据视图 -> Java 类型渲染器 -> + -> 类型:可调试

它将为将来的任何程序的任何此类对象执行此操作。


推荐阅读