Java Language Aggiunta del metodo toString () per oggetti personalizzati


Esempio

Supponiamo di aver definito la seguente classe Person :

public class Person {

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

Se istanziate un nuovo oggetto Person :

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

e più avanti nel tuo codice usi la seguente dichiarazione per stampare l'oggetto:

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

Demo live su Ideone

otterrai un risultato simile al seguente:

Person@7ab89d

Questo è il risultato dell'implementazione del metodo toString() definito nella classe Object , una superclasse di Person . La documentazione di Object.toString() afferma:

Il metodo toString per l'oggetto classe restituisce una stringa composta dal nome della classe di cui l'oggetto è un'istanza, il carattere at-sign `@ 'e la rappresentazione esadecimale senza firma del codice hash dell'oggetto. In altre parole, questo metodo restituisce una stringa uguale al valore di:

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

Quindi, per un output significativo, dovrai sovrascrivere il metodo toString() :

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

Ora l'output sarà:

My name is John and my age is 25

Puoi anche scrivere

System.out.println(person);

Demo live su Ideone

Infatti, println() richiama implicitamente il metodo toString sull'oggetto.