Java toString() - 你是否在toString中包含了classname?

时间:2010-07-14 10:11:25

标签: java debugging tostring

我想知道人们在Java中使用toString()方法的内容。

我一直在为一些新类添加一些,并且想知道它是否应该包含类名。

在班级ClassConfig我无法决定是否应该

@Override
public String toString() {
    return "ClassConfig:" + name; //frozen
}

@Override
public String toString() {
    return name; //frozen
}

尼尔

6 个答案:

答案 0 :(得分:4)

这是案例问题。如果您的目的是调试,那么我想包括类名要好得多。

答案 1 :(得分:3)

这在很大程度上取决于是否有必要将您的类表示为String。如果它有意义,让它返回一个可以使用的String,那么在这种情况下类名将不会非常有用。如果字符串表示可能永远不会被用于某事,请将类名,变量的当前状态以及您喜欢的任何内容放入其中。

答案 2 :(得分:3)

除了字段值之外,我还会包括类名和字段名。甚至可以拨打super.toString()

喜欢在:

@Override  
String toString() {  
   return "ClassConfig{" +  
       "name=" + name +  
       "} " + super.toString();  
}

答案 3 :(得分:1)

由你自己决定把你想要的东西放在toString()中。通常,toString()用于使对象可读。 默认情况下,toString()显示一个不可读的计算机地址。

例如,很多人会实现类似这样的类:

public class Price {
      private double price = 10.0;
      private String ccy = "€";

      @Override
      public String toString() {
          return price + " " + ccy; //will display "10.00000000 €"
      }

}

答案 4 :(得分:0)

您可以让toString()方法返回您喜欢的任何内容。到目前为止,我从来没有覆盖toString()来返回类名。

答案 5 :(得分:0)

我个人希望将类名和键属性放在要打印的类中,这在调试过程中非常有用。