Java toString-Methode
toString
Die Methode in Java wird verwendet, um klare und ausreichende Informationen über ein Objekt ( Object
) in einer für Menschen lesbaren Form bereitzustellen. Das richtige Überschreiben von Methoden toString
kann beim Protokollieren und Debuggen eines Java-Programms hilfreich sein, indem es wertvolle und wichtige Informationen bereitstellt. Da toString()
sie in einer Klasse definiert ist java.lang.Object
und ihre Standardimplementierung nicht viele Informationen bereitstellt, empfiehlt es sich immer, diese Methode in einer Nachfolgeklasse zu überschreiben. Wenn Sie eine wichtige oder allgemeine Klasse vom Typ „ or“ erstellen Order
, überschreiben Sie in Java immer „ equals “, „hashCode“ , „compareTo “ und „Methoden“. Standardmäßig erzeugt die Implementierung eine Ausgabe in der Form . In unserem Beispiel gibt die Klassenmethode beispielsweise test.Country@18e2b22 aus, wobei 18e2b22 der Hash-Code des Objekts in Hexadezimalzahl ist. Wenn Sie die Methode hashCode aufrufen, wird 260943370 zurückgegeben Dezimaläquivalent von 18e2b22. Diese Informationen sind bei der Suche nach einem Problem nicht besonders nützlich. Schauen wir uns ein Beispiel aus dem wirklichen Leben an, in dem Sie ein Problem in Ihrer Netzwerkverbindung finden müssen. Für den Fall, dass Sie wissen möchten, zu welchem Host und Port Ihr System eine Verbindung herstellen möchte, und ob oder nur die Standardinformationen gedruckt werden , wird dies der Fall sein Es ist unmöglich, sich das eigentliche Problem vorzustellen, aber mit einer überschriebenen Implementierung können sie nützliche Informationen wie Hostnamen und Portnummer liefern. In diesem Java-Tutorial geben wir anhand von Codebeispielen einige Tipps zum Überschreiben von Methoden. Trade
Employee
toString
toString
package.class@hashCode
toString()
toString()
Country
Socket
ServerSocket
toString
toString
toString
So überschreiben Sie die toString-Methode in Java:
Druckt das formatierte Datum (d. h. Tag/Monat/Jahr) anstelle des Rohwerts. Dies ist ein sehr nützlicher Hinweis beim Überschreiben einer Java-MethodetoString
. Die reguläre toString()
Klasse java.util.Date
gibt kein formatiertes Datum aus und enthält viele Details, die nicht immer benötigt werden. Wenn Sie ein partielles DateFormat verwenden, d. h. dd-MM-yy in Ihrer Anwendung, dann möchten Sie auf jeden Fall dieses Format anstelle des Standardformats sehen. Die IDE generiert normalerweise keine formatierte Ausgabe Date
und das müssen Sie selbst tun, aber es lohnt sich. Weitere Informationen zur Formatierung in Java finden Sie unter So drucken Sie das Datum im Format ddMMyyDate
in Java. Sie können hierfür auch die SimpleDataFormat- Klasse oder die Joda Date-Time-Bibliothek verwenden .
Dokumentation des toString-Formats
Wenn Ihre MethodetoString()
Daten nicht als Feld=Wert ausgibt, ist es eine gute Idee, das Ausgabeformat zu dokumentieren toString
, insbesondere für wichtige Objekte wie Mitarbeiter oder Student. toString()
Wenn eine Klassenmethode beispielsweise „ John-101-Sales-9846387321Работник(Employee)
“ ausgibt , wäre es eine gute Vorgehensweise, das Format als „Name-ID-Abteilungskontakt“ anzugeben, gleichzeitig aber dem Client keinen Zugriff zu ermöglichen Wenn Sie Informationen aus der Methode erhalten , sollten Sie immer geeignete Methoden zum Abrufen von Daten bereitstellen, z. B. , usw., da die aus der Objektdarstellung erhaltenen Informationen fragil und fehleranfällig sind und der Client daher immer über einen sauberen Pfad zum Abrufen der Daten verfügen sollte Information. toString()
getName()
getId()
getContact()
toString()
Verwenden Sie StringBuilder, um die Ausgabe von toString() zu erstellen.
Wenn Sie Code für eine Methode in Java schreibentoString()
, verwenden Sie StringBuilder , um einzelne Attribute hinzuzufügen. Wenn Sie eine IDE wie Eclipse , Netbeans oder IntelliJ verwenden , ist die Verwendung StringBuilder
der Methode „and“ append()
anstelle des Operators „+“ zum Verfassen toString
ebenfalls die richtige Wahl. Standardmäßig generieren sowohl Eclipse als auch Netbeans toString
mit dem Verkettungsoperator.
Verwendung der @Override-Annotation
Die Verwendung von@Override
Methodenüberschreibungen in Java ist eine der Best Practices in der Sprache. Dieser Hinweis ist jedoch nicht so wichtig wie beim Überschreiben der equals()
und- Methoden compareTo()
, da das Überladen anstelle des Überschreibens zu subtileren Fehlern führen kann, die schwer zu berechnen sind. In jedem Fall ist es besser, die Annotation zu verwenden @Overrride
.
Drucken des Inhalts eines Arrays anstelle des Druckens des Array-Objekts
Ein Array ist ein Objekt in Java, aber es überschreibt keine MethodetoString
und wenn Sie ein Array drucken, ist das Standardausgabeformat nicht sehr nützlich, da wir gerne den Inhalt des Arrays sehen würden. Dies ist übrigens ein weiterer Grund, warum das Array char[] dem Array String vorzuziehen ist , um vertrauliche Daten wie ein Passwort zu speichern. Nehmen Sie sich die Zeit, zu prüfen, ob das Drucken des Inhalts eines Arrays Ihren Kunden hilft oder nicht. Wenn es sinnvoll ist, drucken Sie den Inhalt des Arrays anstelle des Objekts selbst. Aus Leistungsgründen ist es vorzuziehen, Collection
solche ArrayList
oder HashSet zum Array
Speichern anderer Objekte zu verwenden.
Bonus-Tipps
Einige weitere Bonustipps zum Überschreiben von MethodentoString
in Java.
-
Druckausgabe
toString
je nach Länge in mehreren Zeilen oder in einer Zeile. -
Beziehen Sie vollständig qualifizierte Klassennamen in die Darstellung ein
toString
,package.class
um Missverständnisse zu vermeiden. -
Sie können Nullwerte überspringen oder anzeigen, es ist jedoch besser, sie anzuzeigen. Manchmal sind sie nützlich, weil sie zeigen, welches Feld während eines Vorfalls vorhanden ist
null
, beispielsweise NullPointerException . -
Verwenden Sie beispielsweise ein Schlüsselwertformat.
member.name=member.value
Die meisten IDEs unterstützen dies. -
Schließen Sie geerbte Mitglieder ein, wenn Sie der Meinung sind, dass sie der erbenden Klasse die erforderlichen Informationen bereitstellen sollten.
-
Manchmal enthält ein Objekt viele optionale und erforderliche Parameter, wie wir in unserem Builder- Vorlagenbeispiel gezeigt haben, wenn es fast unmöglich ist, alle Felder zu drucken. In diesem Fall können wir nur die erforderlichen Felder drucken, insbesondere da wir optionale Felder haben.
GO TO FULL VERSION