2013-05-07 2 views
-1

Почему бы не создать метод, который возвращает требуемую информацию в классе вместо переопределения метода toString()?Какова цель переопределения toString?

+0

'' Почему бы не создать метод, который возвращает желаемую информацию в классе ... "' - huh? Что вы подразумеваете под «возвращает желаемую информацию в классе»? И что не так с переопределением 'toString()'? Вы знаете, как он хорошо сцепляется с 'System.out.println (...)', правильно? –

+0

Разве они не могут это сделать? – Tdorno

+0

Полагаю, я не знаю, что он хорошо сеется. Я прочитал много сообщений, и все, что я могу найти, это ... "метод toString возвращает строку, которая текстовым образом представляет этот объект" – Bob

ответ

3

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

System.out.println("The result is: " + animal); 

Лучше видеть:

The result is: a dog. 

чем:

The result is: [email protected] 
+0

отлично, так зачем переопределять toString() и не создавать метод getAnimal()? – Bob

+0

@Bob, вам может потребоваться явно вызвать 'getAnimal()', вместо того, чтобы 'toString()' вызывать автоматически. Пример: 'System.out.println (« Результат: »+ animal.getAnimal);'. Оба способа в порядке, но я всегда делаю полезный метод toString() для отладки. Некоторые места будут ТОЛЬКО называть 'toString()' для создания вывода отладки тоже, так что это еще одно дело. –

2

В основном потому, что он гарантированно поддерживается на каждом объекте. toString() является членом класса Object, и поскольку его задача состоит в том, чтобы получить строковое представление класса, другой код может полагаться на его наличие. Например, PrintStream (класс System.out) реализует метод print(Object), который полагается на него.

1

Общепринятая причина, по которой переопределяется toString, относится к классам, в которых есть члены, которые не были бы очевидны для классической реализации toString. В этом случае было бы целесообразно создать пользовательский toString, который возвращает соответствующее строковое значение класса.