Gor*_*don 28 java automation tostring
toString某些简单类的自动生成方法是好还是坏?
我正在考虑生成类似下面的内容,它采用变量名称并生成一个toString方法,打印名称后跟其值.
private String name;
private int age;
private double height;
public String toString(){
   return String.format("Name: %s Age: %d Height %f", name, age, height);
}
Dón*_*nal 43
Eclipse 3.5.2(可能还有早期版本)已经提供了这个功能.如果在编辑器中右键单击,您将在Source - > Generate toString()下找到它...
为了回答你关于自动生成是不好的问题toString(),我的观点是它不是.如果生成的代码与您自己编写的代码非常相似,那么为什么还要打字呢?
Ste*_*eve 34
我个人喜欢为所有对象实现一个toString方法,因为它有助于调试.
我会研究使用Apache Commons ToStringBuilder.
您可以使用反射实现一个简单的toString方法,如下所示:
public String toString() {
   return ToStringBuilder.reflectionToString(this);
}
使用此方法,如果/添加字段,则不必更新toString方法.
添加史蒂夫和唐的答案(+1为他们):
使你的toString()方法简单,确保它不会触发预期(特别是要注意可能为null的字段).
如果可能,请不要调用您班级的其他方法.至少,请确保您的toString()方法不会修改您的对象.
并注意愚蠢的异常toString循环:
public class MyClass { 
       ... 
       public String toString() { 
          // BAD PRACTICE 1: this can throw NPE - just use field1
            return " field1=" + field1.toString() 
                + " extraData=" + getExtraData();
          // BAD PRACTICE 2: potential exception-toString loop
       }
       public MyExtraData getExtraData() {
           try { 
           .... do something
           } catch(Exception e) {
              throw new RuntimeException("error getting extradata - " + this.toString(),e);
           }
       }
}
| 归档时间: | 
 | 
| 查看次数: | 32601 次 | 
| 最近记录: |