Eclipse自动生成toString()方法

Sur*_*nga 4 java eclipse tostring

据我所知,当你有大量的String时,使用+符号的concatinate String不是一个好习惯.但是当我检查eclipse生成的toString()方法时(写点击源文件 - > Source - > Generate toString())它就一样了.

public class Temp
 {
      private String tempName;
      private String tempValue;

      // here getters and setters

  /* (non-Javadoc)
         * @see java.lang.Object#toString()
  */
@Override
public String toString() {
    return "Temp [tempName=" + tempName + ", tempValue=" + tempValue + "]";
}

}
Run Code Online (Sandbox Code Playgroud)

是否有任何地方可以配置像我期望的toString()方法,如eclipse中的bellow或为什么eclipse不考虑这一点.

   public String expectedToString(){
    StringBuffer sb = new StringBuffer();
    sb.append("Temp [tempName=").append(tempName).append(",").append(" tempValue=").append(tempValue).append("]");
    return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)

我将使用自动生成的toString()方法来记录我的对象值.

请建议我.

Evg*_*eev 8

无需更改任何内容,它紧凑且易于阅读,javac将使用StringBuilder进行实际连接,如果您反编译您的Temp.class,您将看到

public String toString() {
   return (new StringBuilder("Temp [tempName=")).append(tempName).append(", tempValue=").append(tempValue).append("]").toString();
}
Run Code Online (Sandbox Code Playgroud)

但在其他情况下,比如

    String[] a = { "1", "2", "3" };
    String str = "";
    for (String s : a) {
        str += s; 
    }
Run Code Online (Sandbox Code Playgroud)

+或者+=是真正的性能杀手,请参阅反编译代码

String str = "";
for(int i = 0; i < j; i++) {
    String s = args1[i];
    str = (new StringBuilder(String.valueOf(str))).append(s).toString();
}
Run Code Online (Sandbox Code Playgroud)

在每次迭代中,创建一个新的StringBuilder,然后转换为String.在这里你应该明确地使用StringBuilder

    StringBuilder sb = new StringBuilder();
    for (String s : a) {
        sb.append(s); 
    }
    String str = sb.toString();
Run Code Online (Sandbox Code Playgroud)