Ответ 1
Вы можете распечатать любой объект, используя System.out.println(Object)
. Эта перегруженная версия println распечатает toString
представление вашего объекта. Если вы хотите настроить то, что будет распечатано, вы должны переопределить метод Object#toString()
, например:
public class A {
private String foo;
@Override
public String toString() {
// When you print out instance of A, value of its foo
// field will be printed out
return foo;
}
}
Если вы не переопределите метод Object#toString()
, будет использоваться реализация по умолчанию из класса Object
, которая имеет эту форму (имя класса и шестнадцатеричное представление хеш-кода экземпляра):
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
Бонус:, если вам нужно создать реализацию toString()
из нескольких полей, есть инструменты, облегчающие ее. Например, ToStringBuilder
от Commons Lang. Или некоторые Java-IDE, такие как IntelliJ IDEA, даже предлагают генерировать toString
для вас на основе полей класса.