【问题标题】:Default detail formatter for arrays in EclipseEclipse 中数组的默认详细信息格式化程序
【发布时间】:2012-01-21 01:06:42
【问题描述】:

在 Eclipse 中调试 java 程序时,在变量视图中,当您突出显示一个变量时,它会在下面的窗格中打印该变量的详细信息。该窗格称为“详细信息视图”,显示的值是变量的“详细信息”。默认情况下,它只是对变量调用.toString() 的结果。但是 Eclipse 允许您为任意对象指定和自定义“详细格式化程序”,将它们映射到该视图中更有帮助和描述性的字符串。

我的问题是:在数组(比如整数)上调用的 .toString() 方法返回一个无用的内存地址。然而,当我在调试模式下突出显示一个数组变量时,Eclipse 似乎智能地将它解析为一个非常有用的逗号分隔字符串(例如"[42, 13, null, 19]")。我认为这意味着 Eclipse 已经为具有非常有用的功能的数组建立了默认的 Detail Formatter。 有谁知道如何在我的代码中利用 Detail Formatter 来避免重写相同的逻辑?

如果您有兴趣,动机是为 SQL 查询生成 IN 子句的内容。也就是说,我正在尝试生成一个 SQL 查询:

SELECT * FROM table WHERE id IN (1,2,3)

从一个任意的 int[]:

int[] ids = new int[] {1,2,3}

我意识到我可以通过编写一个 for 循环、使用 StringBuilder 等来实现这一点,但我想知道 Eclipse 是否已经为我完成了这项工作并公开了一个有用的方法(阅读:我非常懒惰)

【问题讨论】:

    标签: java sql eclipse debugging


    【解决方案1】:

    Eclipse 使用Arrays.toString,但如果您想使用括号而不是方括号,您可能需要使用Guava

    return "(" + Ints.join(",", array) + ")";
    

    【讨论】:

    • 我正在尝试格式化 StackTraceElement[] 但 eclipse 似乎忽略了它,就像它只接受 StackTraceElement,知道吗?
    • 我最终创建了一个类来保存这样的数组
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多