Sinn einer toString Methode

Hallo zusammen,
ich habe mich gefragt, was genau der Sinn hinter einer toString Methode sein soll. Mir ist klar, dass man die Methode benutzen kann, um die Speicheradresse eines Objekts ausgeben zu lassen. Mir ist auch klar, wie man die Methode toString überschreiben kann, um "nützlichere" Informationen zu erhalten. Mir stellt sich nur die Frage nach dem Sinn dahinter.
Ich brauche doch keine überschriebene toString Methode, um Informationen über meine Klasse zu erhalten? Worin bestehen also die Vorteile von toString gegenüber einer normalen sondierenden Methode?
Ich hoffe jemand kann mir auf die Sprünge helfen;)
 
Die toString() Methode ist zum Beispiel für allgemeines Logging nützlich - bzw. immer dann, wenn du eine einfache String-Repräsentation eines Objektes haben möchtest.
Wenn du ein Objekt in eine der unzähligen Logging-Libraries (JDK Logger, Log4j, slf4j-Adapter, ...) steckst, nutzen alle die toString()-Methode, um das übergebene Objekt zu loggen. Hier wäre es eher umständlich, eine pro Klasse unterschiedliche Methode vom Programmierer verwenden zu lassen.

EDIT:
dass man die Methode benutzen kann, um die Speicheradresse eines Objekts ausgeben zu lassen.
Das stimmt nicht. Auch wenn die Default Object.toString()-Methode den Klassennamen, gefolgt von einem @-Zeichen, gefolgt vom hashCode() des Objektes als String ausgibt, hat der default Object.hashCode() bzw. identityHashCode() tatsächlich nichts mit einer Adresse des Objektes zu tun. Es ist ein per Zufall generierter und im Objekt abgespeicherter int Wert.
Mehr Infos: https://srvaroa.github.io/jvm/java/openjdk/biased-locking/2017/01/30/hashCode.html
 
Zuletzt bearbeitet:
Die toString() Methode wird auch von println() und Konsorten verwendet.

Natürlich könntest du auch println(myObjectInstance.getMyStringRepresentation()) schreiben, aber println(myObjectInstance) ist doch viel angenehmer.
 
Geht auch Richtung Logging, aber ich finde z.B. beim Debuggen mithilfe einer IDE die Variablenliste sehr hilfreich, die ebenfalls die toString() Repräsentation deines Objektes ausgibt.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben