/ / Überschreiben einer .toString-Methode vs Schleifen einer .getMethod zu drucken - Java

Überschreiben einer .toString-Methode gegen das Durchlaufen einer .get-Methode zum Drucken - java

Hatte ein besonderes Problem mit einer HausaufgabeZuweisung, die versucht, ein Array zu drucken. Ich habe keinen spezifischen Code ... nicht auf der Suche nach einer bestimmten Antwort. Es wurde Hash-Code mit der Druckmethode gedruckt und es besteht Einigkeit darüber, dass die .toString () -Methode das Problem löst. Ich konnte das nicht zur Arbeit bringen, fand aber die zweite Antwort hier:

https://stackoverflow.com/a/19845901/7262393

Meine Frage ist (wenn es allgemein beantwortet werden kann),Warum würde ich nicht einfach eine .get () -Methode verwenden und alle Elemente durchlaufen, wie in dieser Antwort vorgeschlagen? Gibt es einen bestimmten Grund, warum man den anderen benutzt? Ich nehme an, dass die .toString-Methode eine Schleife ist, die jedes Element in eine Zeichenfolge umwandelt und dann ausgibt.

Vielen Dank

Antworten:

0 für die Antwort № 1

Bei Verwendung eines.get () - Methode, um mehrere Felder zu einem String zu verketten, werden Sie etwas Leistung opfern, weil für jede + Operation ein neuer String erstellt werden muss (Java Strings sind unveränderlich).

Wenn Sie eine .toString () - Methode verwenden, können Sie Folgendes verwenden:

String.format("Person {name:%s, street:%s}",name,street);

Das hätte viel bessere Leistung.


0 für die Antwort № 2

Ich nehme an, Apache Commons ReflectionToStringBuilder wird dir helfen. Bitte prüfen Sie das Dokument für Details.

Es kann auf folgende Weise verwendet werden:

ReflectionToStringBuilder.toString(<object you want to print to string>);

0 für die Antwort № 3

Nun, was würden Sie jedes Mal tun, wenn Sie den Inhalt eines Containerobjekts sehen wollen? Schleife darüber und drucke jedes enthaltene Element aus oder rufe an System.out.println(obj.toString());?

Im Allgemeinen ist es besser hinzuzufügen toString() Methoden für Ihre Klassen, weil das wahrscheinlich etwas ist, was Sie beim Debuggen viel tun wollen, und es wird Ihnen ersparen, Ihre Bemühungen viele Male zu duplizieren!