代码之家  ›  专栏  ›  技术社区  ›  fastcodejava

Eclipse中的格式设置问题

  •  0
  • fastcodejava  · 技术社区  · 15 年前

    我在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 回复  |  直到 9 年前
        1
  •  6
  •   Marcelo Cantos    15 年前

    三元运算符的优先级非常低。Eclipse正在重组您的代码,这一事实暗示了它并不像您想象的那样做。试试这个:

    public String toString() {
      return "HouseVo [ "
      + "Name  :  " + (this.name == null ? "" : this.name)
      + "Address  :  " + (this.address == null ? "" : this.address)
    }
    
        2
  •  3
  •   Community CDub    8 年前

    没有一种绝对正确的方式来自动格式化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 字段立即跟随 Name 值之间没有任何分隔符。

    使用格式化字符串可以很容易地切换到,例如,如下所示:

         "HouseVo [ Name: %s, Address: %s ]"
    

    因此,代码不仅可读性更高,而且维护起来也更容易。

    也见

    相关问题

        3
  •  1
  •   user159088    15 年前

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

    在缩进、大括号、新行、换行、空格、控制语句等方面有很多选项。

    不确定是否可以修复此格式,但在换行部分中,可以修改 表达式>条件 选择权。看看那里有没有适合你需要的款式。

        4
  •  1
  •   Rupeshit    15 年前

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

    这是编写XML文件的示例代码

        5
  •  0
  •   Ravindra Gullapalli    15 年前

    当您使用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();
    
        6
  •  0
  •   Thorbjørn Ravn Andersen    15 年前

    使用 // S:

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

    在这个特定的例子中,我会提取每个?:-运算符结果为局部变量,然后在结尾处对其进行concat。使阅读更容易。

        7
  •  -1
  •   javaguy    15 年前

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

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