IntelliJ自定义调试器的数据视图:如何为Java数据类型渲染器创建多行表达式?

时间:2016-12-09 11:30:13

标签: java intellij-idea

我想自定义IntelliJ调试器显示Set个对象值的方式。因此,我在Java Data Type Renderers对话框中创建了一个新的Customize Data Views,并将此代码粘贴到Use following expression字段中:

String s = "";
if (this.size() > 0) {
  Iterator iterator = this.iterator();
  if (iterator.hasNext()) {
    s += iterator.next();
    if (iterator.hasNext()) {
      s += ", ";
      do {
        s += iterator.next();
      } while (iterator.hasNext());
    }
  }
}
return s;

但是调试器中显示以下错误:Unable to evaluate the expression Initializer for 's' has incompatible type。 我应该如何在字段中编写多行表达式,以便上面的代码正常工作?

2 个答案:

答案 0 :(得分:1)

如果您使用的是Java 8,则可以使用String.join(", ", this) 看起来应该是这样的。 Image showing what to change on the customize data views dialog

如果您使用的是旧版Java,则可以使用。

  StringBuilder sb = new StringBuilder();
    Iterator<?> iter = this.iterator();
    if (iter.hasNext())
        sb.append(iter.next().toString());
    while (iter.hasNext()) {
        sb.append(", ");
        sb.append(iter.next().toString());
    }
    return sb.toString();

IntelliJ将iterator代码重写为红色,但它仍然有效。 How to the long version should look

答案 1 :(得分:1)

使用只是:

有什么问题
this.toString()