Почему бы не создать метод, который возвращает требуемую информацию в классе вместо переопределения метода toString()?Какова цель переопределения toString?
ответ
Переопределение toString()
служит для установки того, что будет возвращено во время неявного преобразования строк. Примером может служить следующее:
System.out.println("The result is: " + animal);
Лучше видеть:
The result is: a dog.
чем:
The result is: [email protected]
отлично, так зачем переопределять toString() и не создавать метод getAnimal()? – Bob
@Bob, вам может потребоваться явно вызвать 'getAnimal()', вместо того, чтобы 'toString()' вызывать автоматически. Пример: 'System.out.println (« Результат: »+ animal.getAnimal);'. Оба способа в порядке, но я всегда делаю полезный метод toString() для отладки. Некоторые места будут ТОЛЬКО называть 'toString()' для создания вывода отладки тоже, так что это еще одно дело. –
В основном потому, что он гарантированно поддерживается на каждом объекте. toString()
является членом класса Object
, и поскольку его задача состоит в том, чтобы получить строковое представление класса, другой код может полагаться на его наличие. Например, PrintStream
(класс System.out
) реализует метод print(Object)
, который полагается на него.
Общепринятая причина, по которой переопределяется toString
, относится к классам, в которых есть члены, которые не были бы очевидны для классической реализации toString
. В этом случае было бы целесообразно создать пользовательский toString
, который возвращает соответствующее строковое значение класса.
'' Почему бы не создать метод, который возвращает желаемую информацию в классе ... "' - huh? Что вы подразумеваете под «возвращает желаемую информацию в классе»? И что не так с переопределением 'toString()'? Вы знаете, как он хорошо сцепляется с 'System.out.println (...)', правильно? –
Разве они не могут это сделать? – Tdorno
Полагаю, я не знаю, что он хорошо сеется. Я прочитал много сообщений, и все, что я могу найти, это ... "метод toString возвращает строку, которая текстовым образом представляет этот объект" – Bob