Метод toString()

217
07 апреля 2022, 12:40

У меня вопрос про использование метода toString(), его переопределение На сколько я знаю, он используется для удобного вывода данных об объекте (чтобы человеку было удобно эти данные прочесть).

У нас в университете в задании по java есть условие создать в классе метод, который бы выводил информацию об объекте.

Будет ли правильно переопределить данный метод и затем в классе Main.java вывести данные об объекте. Только мне нужна проверка в toString(): если переменная объекта не задана, то есть равна null, то мне нужно вывести "данные неизвестны". Можно ли в toString() делать такие проверки и вообще правильно ли использовать данный метод именно для такого вывода информации о классе. Просто где-то слышала, что метод toString() в каком-то случае использовать нельзя, это концептуально неправильно, но я послушала объяснение, а теперь вот сомневаюсь, не делаю ли я ошибку, используя его так.

P.S. я знаю, что правильнее всего было бы создать другой класс для вывода информации и в него передавать ссылку на объект, но в задании написано, что метод, печатающий информацию, должен быть именно в том же классе, в котором все его данные.

Заранее спасибо!

Answer 1

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

Есть случаи, когда метод toString() использовать нежелательно, например, в перечислимых типах для получения имени enum-значения, т.к. enum-значения имеют метод name() для этого, а метод toString() может быть переопределен и его значение может не соответствовать ожидаемому.

READ ALSO
JavaFX зависает при поиске

JavaFX зависает при поиске

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

269
Структура папок в Spring MVC

Структура папок в Spring MVC

Есть ли какое то правило для строгого именования папок в Spring MVCсмотрел разные видео где использовали например папку dao, я так понимаю она нужна...

204
Подсказки css-свойств/значений для sass в VS Code

Подсказки css-свойств/значений для sass в VS Code

Работаю в VS Code, пишу стили в *sass и не показываются подсказки как в файлах *

121