когда использовать метод toString () - PullRequest
11 голосов
/ 24 февраля 2010

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

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

Ответы [ 9 ]

23 голосов
/ 24 февраля 2010

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

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

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

3 голосов
/ 25 февраля 2010

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

public String createString(final String str) {
  final StringBuilder sb = new StringBuilder(str);
  sb.append("foo");
  sb.append("bar");
  return sb.toString();
}
2 голосов
/ 24 февраля 2010
  1. Вы хотите отобразить объект и не хотите проверять, является ли он пустым.
  2. Вы хотите объединить строки, не думая о специальном атрибуте, просто укажите программист по умолчанию.

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

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

отобразит «You is null» или «You is James», если user null, или toString отобразит «James» для этого (существующего) экземпляра.

1 голос
/ 24 февраля 2010

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

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

1 голос
/ 24 февраля 2010

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

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

0 голосов
/ 13 апреля 2016

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

    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);

}

}

0 голосов
/ 29 июня 2015

Когда вы печатаете ссылочную переменную, происходит следующее задание.

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

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

ИмяКласса @ HexadecimalOfHashCode

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

0 голосов
/ 03 марта 2014

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

0 голосов
/ 24 февраля 2010

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

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

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

...