Looking for java Keywords? Try Ask4Keywords

Java Language Добавление метода toString () для настраиваемых объектов


пример

Предположим, вы определили следующий класс Person :

public class Person {

    String name;
    int age;
    
    public Person (int age, String name) {
        this.age = age;
        this.name = name;
    }
}

Если вы создаете экземпляр нового объекта Person :

Person person = new Person(25, "John");

и позже в вашем коде вы используете следующий оператор для печати объекта:

System.out.println(person.toString());

Живая демонстрация на Ideone

вы получите результат, похожий на следующий:

Person@7ab89d

Это результат реализации метода toString() определенного в классе Object , суперклассе Person . Документация объекта Object.toString() гласит:

Метод toString для класса Object возвращает строку, состоящую из имени класса, объектом которого является экземпляр, символа at-sign `@ 'и шестизначного шестнадцатеричного представления хеш-кода объекта. Другими словами, этот метод возвращает строку, равную значению:

getClass().getName() + '@' + Integer.toHexString(hashCode())

Таким образом, для значимого вывода вам придется переопределить метод toString() :

@Override
public String toString() {
    return "My name is " + this.name + " and my age is " + this.age;
}

Теперь выход будет:

My name is John and my age is 25

Вы также можете написать

System.out.println(person);

Живая демонстрация на Ideone

На самом деле println() неявно вызывает метод toString для объекта.