JavaRush /Java-Blog /Random-DE /10 Tipps zum Überschreiben der toString()-Methode in Java...
Ku6ep
Level 35

10 Tipps zum Überschreiben der toString()-Methode in Java (Teil 2)

Veröffentlicht in der Gruppe Random-DE

toString-Beispiele in Java

Wir werden die folgende Klasse verwenden, um unser toString-Beispiel für Netbeans, Eclipse und das ToStringBuilder-Dienstprogramm von Apache zu demonstrieren.

/** * Java программа, демонстрирующая Wie переопределить метод toString() в Java. * Эта Java программа показывает Wie вы можете использовать IDE типа Netbeans oder Eclipse * и открытую библиотеку типа Apache commons ToStringBuilder для * переопределения toString в Java. * @author Javarevisited.blogspot.com */ public class Country { private String name; private String capital; private long population; private Date independenceDay; public Country(String name){ this.name = name; } public String getName(){ return name; } public void setName(String name) {this.name = name;} public String getCapital() {return capital;} public void setCapital(String capital) {this.capital = capital;} public Date getIndependenceDay() {return independenceDay;} public void setIndependenceDay(Date independenceDay) {this.independenceDay = independenceDay;} public long getPopulation() { return population; } public void setPopulation(long population) {this.population = population; } @Override public String toString() { return "Country{" + "capital=" + capital + ", population=" + population + ", independenceDay=" + independenceDay + '}'; } public void setIndependenceDay(String date) { DateFormat format = new SimpleDateFormat("dd/MM/yyyy"); try { this.independenceDay = format.parse(date); } catch (ParseException ex) { Logger.getLogger(Country.class.getName()).log(Level.SEVERE, null, ex); } } public static void main(String args[]) { Country India = new Country("India"); India.setCapital("New Delhi"); India.setIndependenceDay("15/07/1947"); India.setPopulation(1200000000); System.out.println(India); } }

Die von Netbeans IDE erstellte toString-Methode


Die von Netbeans IDE generierte toString-Methode erzeugt die folgende Ausgabe für die oben definierte Klasse:

Country{capital=New Delhi, population=1200000000, independenceDay=Fri Aug 15 00:00:00 VET 1947}

Wenn Sie sich die obige Ausgabe ansehen, werden Sie feststellen, dass Netbeans das formatierte Datum nicht für Sie erstellt: Stattdessen ruft es die toString()-Methode der Klasse java.util.Date auf

Die von der Rclise-IDE erstellte toString()-Methode


Standardmäßig erstellt Eclipse die folgende toString-Methode:

@Override public String toString() { return "Country [name=" + name + ", capital=" + capital + ", population=" + population + ", independenceDay=" + independenceDay + "]"; }

Sie können Code für die toString-Methode in Eclipse generieren, indem Sie auf Quelle -> toString() generieren klicken. Es bietet auch mehrere Möglichkeiten, z. B. die Auswahl des Codestils, d. h. die Verwendung des Verkettungsoperanden oder StringBuilder usw. Unten ist die Ausgabe der toString()-Methode, die wir gerade in Eclipse erstellt haben:

Country [name=India, capital=New Delhi, population=1200000000, independenceDay=Tue Jul 15 00:00:00 VET 1947]

Verwenden von ToStringBuilder zum Überschreiben der toString()-Methode von Java

Neben vielen nützlichen Klassen wie PropertyUtils , EqualsBuilder oder HashCodeBuilder bietet Apache auch ToStringBuilder, der Code generieren kann, um die toString()-Methode in verschiedenen Stilen auszugeben. Sehen wir uns an, wie die Ausgabe der toString-Methode im einfachen und mehrzeiligen Stil aussieht: Einfacher Stil:

India,New Delhi,1200000000,Fri Aug 15 00:00:00 VET 1947

Mehrzeiliger Stil:

test.Country@f0eed6[
 name=India
 capital=New Delhi
 population=1200000000
 independenceDay=Fri Aug 15 00:00:00 VET 1947
 ]

NO_FIELD_NAMES_STYLE (Stil ohne Feldnamen)

test.Country@1d05c81[India,New Delhi,1200000000,Fri Aug 15 00:00:00 VET 1947]

SHORT_PREFIX_STYLE (kurzer Präfixstil)

Country[name=India,capital=New Delhi,population=1200000000,independenceDay=Fri Aug 15 00:00:00 VET 1947]

ToStringStyle.DEFAULT_STYLE (Standardstil)

test.Country@1d05c81[name=India,capital=New Delhi,population=1200000000,independenceDay=Fri Aug 15 00:00:00 VET 1947]

Guava , eine ähnliche Open-Source-Bibliothek von Google, bietet auch eine praktische API zum Generieren von Code für die toString-Methode in Java.

Wenn die toString-Methode in Java aufgerufen wird

toString ist eine ziemlich spezifische Methode und wird von vielen JavaAPI-Methoden wie println(), printf() , Protokollierung, Assert-Anweisungen , IDE-Debuggern, beim Drucken von Sammlungen und beim Verketten aufgerufen. Wenn eine Unterklasse toString() nicht überschreibt, wird die in der Object-Klasse definierte Standardimplementierung aufgerufen. Viele Entwickler verwenden Protokollierungs-APIs wie Log4J oder java.util.Logger, um Protokolle auszugeben, und vermissen hier häufig Object.

logger.info("Customer not found:" + customer)

und wenn der Kunde toString nicht überschreibt und wichtige Informationen wie Kunden-ID, Kundenname usw. ausgibt. Dann wird es ziemlich schwierig sein, das Problem zu diagnostizieren. Aus diesem Grund lohnt es sich immer, toString in Java zu überschreiben. Werfen wir einen Blick auf einige der Vorteile, die sich daraus ergeben.

Vorteile des Überschreibens der toString-Methode

  1. Wie oben erläutert, hilft ein ordnungsgemäß überschriebener toString beim Debuggen , indem er wichtige Informationen ausgibt.
  2. Wenn ein wichtiges Objekt in einer Sammlung gespeichert ist, wird beim Drucken der Sammlung die toString-Methode des gespeicherten Objekts aufgerufen, die die wichtigen Informationen ausdrucken kann. Ein klassisches Beispiel für eine nicht überschriebene toString-Methode ist Array in Java, das das Ergebnis der Standardimplementierung anstelle des Inhalts des Arrays ausgibt. Obwohl es mehrere Möglichkeiten gibt, den Inhalt eines Arrays mit Arrays.toString() und dergleichen zu drucken; aber da Array ein Java-Objekt ist, wäre es viel besser, wenn es wüsste, wie es sich selbst ausgibt, genau wie Sammlungsklassen wie List oder Set .

Dies sind nur einige der Vorteile, die Sie durch die Implementierung oder Überschreibung der toString-Methode in Java erhalten . Es gibt noch viele weitere Vorteile, die Sie erhalten und selbst lernen können. Ich hoffe, dass diese Tipps Ihnen helfen, das Beste aus Ihren toString-Implementierungen herauszuholen. Lassen Sie uns wissen, ob Sie einzigartige Möglichkeiten kennen, mit toString zu arbeiten, die Ihnen bei Ihren Java-Anwendungen helfen.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION