Java toString () - Вы включаете имя класса в toString? - PullRequest
2 голосов
/ 14 июля 2010

Мне было интересно, что люди вкладывают в свои методы toString () в Java.

Я добавлял несколько к некоторым новым классам и задавался вопросом, должно ли оно включать имя класса или нет.

В классе ClassConfig Я не могу решить, должен ли я иметь

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

или

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

Neil

Ответы [ 6 ]

4 голосов
/ 14 июля 2010

Это действительно проблема в каждом конкретном случае. Если вы собираетесь отлаживать, я думаю, что включение имени класса намного лучше.

3 голосов
/ 14 июля 2010

Я бы, кроме значений полей, включал в себя как имена классов, так и имена полей. Может быть, даже позвонить super.toString().

Как в:

@Override  
String toString() {  
   return "ClassConfig{" +  
       "name=" + name +  
       "} " + super.toString();  
}
3 голосов
/ 14 июля 2010

Это сильно зависит от того, имеет ли смысл представлять ваш класс в виде строки или нет.Если это имеет смысл, попросите вернуть строку, которую можно использовать, в этом случае имя класса будет не очень полезным.Если строковое представление, вероятно, никогда не будет использовано для чего-то, поместите имя класса, некоторые текущие состояния переменных и все, что вам нравится.

1 голос
/ 14 июля 2010

Это зависит от вас, чтобы поместить то, что вы хотите в toString ().Обычно toString () создается и используется для создания читабельного объекта.По умолчанию toString () отображает нечитаемый адрес компьютера.

Например, многие люди реализуют класс Price следующим образом:

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

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

}

0 голосов
/ 13 октября 2011

Лично я хотел бы указать имя класса, а также ключевые атрибуты в классе для печати, что полезно при отладке.

0 голосов
/ 14 июля 2010

Вы можете заставить метод toString () возвращать все что угодно. Я никогда не переопределял toString (), чтобы вернуть имя класса.

...