java - Eclipse 中数组的默认详细信息格式化程序

标签 java sql eclipse debugging

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

我的问题是:在数组(比如整数)上调用的 .toString() 方法返回无用的内存地址。然而,当我在 Debug模式下突出显示一个数组变量时,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 是否已经为我完成了该操作并公开了一个有用的方法(阅读:我非常懒惰)

最佳答案

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

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

关于java - Eclipse 中数组的默认详细信息格式化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8949860/

相关文章:

SQL Server 2012 : How can a column-store index provide multiple columns at once?

java - 无法使用线程池处理多个客户端,因为当我收到第二个客户端请求时,它正在挂起第一个线程

MySQL 表被指定了两次?

java - 为什么这个通用接口(interface)堆栈不起作用?

mysql - 带有来自另一个表的主键的sql表

eclipse - 如何计算Sparql查询中的行数

java - 如何在 Eclipse 中为不同的项目管理不同的 Maven 设置?

android - 创建 TextView 的实例

java - 在 Spring 为 excel 生成运行一个短暂的后台任务

Java 8 Map KeySet Stream 无法按预期在 Collector 中使用