Когда использовать метод toString()

Это может показаться очень простым... может кто-нибудь объяснить использование метода toString() и когда эффективно использовать это?

Сделали поиск в google, но не смогли найти хороший ресурс.

Ответ 1

В большинстве языков toString или эквивалентный метод просто гарантирует, что объект может быть представлен текстовым способом.

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

Объекты часто реализуют пользовательское поведение toString, так что метод фактически сообщает вам что-то о экземпляре объекта. Например, класс Person может переопределить его для возврата "Фамилия, имя", а класс Date будет отображать дату, отформатированную в соответствии с некоторыми настройками по умолчанию (например, текущая культура пользовательского интерфейса).

Ответ 2

  • Вы хотите отобразить объект и не хотите проверять, имеет ли он значение null раньше.
  • Вы хотите сконфигурировать строки и не думать о специальном атрибуте, просто предоставить программисту по умолчанию.

Таким образом:

out.println("You are " + user);

отобразит "Вы null" или "Вы - Джеймс", если пользователь равен null, или toString отображает "Джеймс" для этого (существующего) экземпляра.

Ответ 3

Существует несколько ситуаций, в которых можно было бы переопределить метод toString для класса (большинство из которых уже упоминаются в существующих ответах), но одна из наиболее распространенных ситуаций, в которых мне необходимо явно вызвать toString on объект используется при использовании StringBuilder для построения строки.

public String createString(final String str) {
  final StringBuilder sb = new StringBuilder(str);
  sb.append("foo");
  sb.append("bar");
  return sb.toString();
}

Ответ 4

Предполагая .NET или Java:

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

Ответ 5

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

Например, вы можете переопределить toString() в классе Person, чтобы вернуть имя и фамилию.

Ответ 6

В строку следует использовать, когда вам нужно изменить тип данных на строку. Для встроенных типов, таких как int и таких, строковые представления - это то, что вы ожидаете. т.е.

  int i = 5;
  string s = i.ToString(); //s now equals "5" 

Дает вам строку символов "5" для большинства сложных типов и всех типов, созданных пользователем, для перегрузки метода tostring, или вы получите только имя класса. Строка позволяет использовать сложную сборку форматирования в .net с вашими собственными объектами. вы можете создавать сложные форматы, такие как класс datetime, чтобы обеспечить гибкость в использовании ваших собственных типов.

Ответ 7

toString() может использоваться для исключения шестнадцатеричного адреса, поэтому для преодоления этой проблемы вам необходимо переопределить toString(), после чего вы получите исходный текстовый формат данных.

Ответ 8

При печати ссылочной переменной выполняется следующая задача.

  • Если ссылочная переменная содержит значение null, то будет отображаться нулевое значение.
  • Если ссылочная переменная содержит адрес объекта, то toString() Метод будет вызываться JVM автоматически.

По умолчанию toString() of Object.class будет печатать:

ИмяКласс @HexadecimalOfHashCode

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

Ответ 9

Используется, когда мы должны отображать значения полей, которые мы инициализируем через конструктор, и что отображаться без использования какого-либо getter.

    import Test.Date;
public class Employ {

private String firstname;
private String lastname;
private Date DOB;
private Date DOH;
public Employ(String name,String lastname,Date DOB,Date DOH)
{
    this.firstname=name;
    this.lastname=lastname;
    this.DOB=DOB;
    this.DOH=DOH;

}

    public  String toString(){

    return String.format("%s %s Birthday %s Hired %s",firstname,lastname,DOB,DOH);      
        }
public static void main (String args[])
{
    Date dob= new Date(12,3,1992);
    Date doh= new Date(10,6,2005);

    Employ em= new Employ("BOB", "Wrigh", dob,doh);

    System.out.println(em);

}

}