Eclipse中的问题格式化

时间:2010-05-14 11:18:18

标签: java eclipse code-formatting

我在Eclipse中有一个方法,如下所示。

public String toString() {
  return "HouseVo [ "
  + "Name  :  " + this.name == null ? "" : this.name
  + "Address  :  " + this.address == null ? "" : this.address;
}

格式化后,它变为:

return "HouseVo [ " + "Name  :  " + this.name == null ? ""
        : this.name + "Address  :  " + this.address == null ? ""
               : this.address;

有任何方法可以修复它以便正确格式化吗?

7 个答案:

答案 0 :(得分:6)

三元运算符的优先级非常低。 Eclipse正在重构您的代码这一事实暗示它不会像您认为的那样做。试试这个:

public String toString() {
  return "HouseVo [ "
  + "Name  :  " + (this.name == null ? "" : this.name)
  + "Address  :  " + (this.address == null ? "" : this.address)
}

答案 1 :(得分:3)

没有一种绝对正确的方法可以自动格式化Eclipse遵循的代码。

那就是说,我反而将代码重构为这样的东西:

static String emptyIfNull(String s) {
   return (s == null) ? "" : s;
}

public String toString() {
  return String.format(
     "HouseVo [ Name  :  %sAddress  :  %s",
     emptyIfNull(this.name),
     emptyIfNull(this.address)
  );
}

这使用String.format,很明显目前,您的toString()格式没有结束]Address字段紧跟{{1}中间没有任何分隔符的值。

使用格式化字符串可以轻松切换到比如这样的内容:

Name

因此,代码不仅更具可读性,而且更易于维护。

另见

相关问题

答案 2 :(得分:1)

您可以尝试在Eclipse首选项( Java>代码样式> Formatter )中配置格式化程序并编辑配置文件。

关于缩进,括号,新行,换行,空格,控制语句等,有很多选项。

不确定您是否可以修复此确切格式,但在换行符部分中,您可以对表达式>进行修改。条件选项。看看有没有一种风格可以满足您的需求。

答案 3 :(得分:1)

您可以创建一个xml文件,在其中可以指定格式化代码的方式,然后可以使用首选项添加该xml文件 - Java - 代码样式 - 格式化程序,并在其中输入xml文件。

以下是编写该xml文件的示例代码

答案 4 :(得分:0)

当你使用eclipse中给出的格式工具时,它会像那样格式化它。

如果您需要更易读的格式,最好将字符串连接分开,如下所示。

java.lang.StringBuffer sb = new java.lang.StringBuffer("HouseVo [ ");
sb.append("Name  :  " + (this.name == null ? "" : this.name));
sb.append("Address  :  " + (this.address == null ? "" : this.address));
return sb.toString();

答案 5 :(得分:0)

使用//

public String toString() {
  return "HouseVo [ " //
  + "Name  :  " + this.name == null ? "" : this.name //
  + "Address  :  " + this.address == null ? "" : this.address;
}

在这种特殊情况下,我会将每个?: - 运算符结果提取到局部变量,然后在结尾处将它们连接起来。使阅读更容易。

答案 6 :(得分:-1)

加上一些括号可能有所帮助。试试这个:

public String toString() { 
   return "HouseVo [ " 
          + ("Name  :  " + this.name == null ? "" : this.name)
          + ("Address  :  " + this.address == null ? "" : this.address)
          + "]"; 
}