Ответ
Метод toString() из класса Object возвращает строковое представление объекта. Его основное назначение — предоставить удобочитаемую информацию об объекте для отладки, логирования и вывода.
Поведение по умолчанию (если не переопределен):
Object obj = new Object();
System.out.println(obj.toString()); // Вывод: java.lang.Object@15db9742
// Формат: ИмяКласса@ХешКод
Зачем переопределять? Чтобы сделать вывод информативным.
Пример переопределения:
public class Person {
private String name;
private int age;
@Override
public String toString() {
return "Person{" +
"name='" + name + ''' +
", age=" + age +
'}';
}
}
Person person = new Person("Alice", 30);
System.out.println(person); // Неявный вызов toString()
// Вывод: Person{name='Alice', age=30}
Best practices:
- Всегда переопределяйте
toString()для классов-сущностей (моделей данных). - Избегайте сложной логики — метод должен быть быстрым и не вызывать побочных эффектов.
- Генерируйте стабильную строку, если она используется для идентификации (например, в логах).
- Современные IDE (IntelliJ IDEA, Eclipse) и библиотеки вроде Lombok (
@ToString) могут генерировать этот метод автоматически.