JavaRush /Blog Java /Random-FR /10 conseils pour remplacer la méthode toString() en Java ...
Ku6ep
Niveau 35

10 conseils pour remplacer la méthode toString() en Java (partie 2)

Publié dans le groupe Random-FR

Exemples de toString en Java

Nous utiliserons la classe suivante pour démontrer notre exemple toString pour Netbeans, Eclipse et l'utilitaire ToStringBuilder d'Apache.

/** * Java программа, демонстрирующая How переопределить метод toString() в Java. * Эта Java программа показывает How вы можете использовать IDE типа Netbeans or 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); } }

La méthode toString créée par l'EDI Netbeans


La méthode toString générée par l'EDI Netbeans produit le résultat suivant pour la classe définie ci-dessus :

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

Si vous regardez le résultat ci-dessus, vous verrez que Netbeans ne crée pas la date formatée pour vous : à la place, il appelle la méthode toString() de la classe java.util.Date.

La méthode toString() créée par l'IDE Rclise


Par défaut, Eclipse crée la méthode toString suivante :

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

Vous pouvez générer du code pour la méthode toString dans Eclipse en cliquant sur Source --> Generate toString(). Il offre également plusieurs possibilités, comme le choix du style de code, c'est-à-dire l'utilisation de l'opérande de concaténation ou de StringBuilder , etc. Vous trouverez ci-dessous le résultat de la méthode toString() que nous venons de créer dans Eclipse :

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

Utilisation de ToStringBuilder pour remplacer la méthode toString() de Java

Outre de nombreuses classes utiles telles que PropertyUtils , EqualsBuilder ou HashCodeBuilder, Apache fournit également ToStringBuilder qui peut générer du code pour générer la méthode toString() dans plusieurs styles différents. Voyons à quoi ressemble le résultat de la méthode toString dans un style simple et multiligne : Style simple :

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

Style multiligne :

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

NO_FIELD_NAMES_STYLE (style sans noms de champs)

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

SHORT_PREFIX_STYLE (style de préfixe court)

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

ToStringStyle.DEFAULT_STYLE (style par défaut)

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

Une bibliothèque open source similaire de Google, Guava fournit également une API pratique pour générer du code pour la méthode toString en Java.

Lorsque la méthode toString est appelée en Java

toString est une méthode assez spécifique et est appelée à partir de nombreuses méthodes JavaAPI telles que println(), printf() , la journalisation, les déclarations assert , les débogueurs IDE, lors de l'impression de collections et lors de la concaténation. Si une sous-classe ne remplace pas toString(), alors l'implémentation par défaut définie dans la classe Object est appelée. De nombreux développeurs utilisent des API de journalisation telles que Log4J ou java.util.Logger pour générer des journaux et manquent souvent Object ici.

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

et si le client ne remplace pas toString et ne génère pas d'informations importantes telles que customerId, customerName, etc. il sera alors assez difficile de diagnostiquer le problème. C'est pourquoi il vaut toujours la peine de remplacer toString en Java. Jetons un coup d'œil à certains des avantages si nous faisons cela.

Avantages du remplacement de la méthode toString

  1. Comme indiqué ci-dessus, un toString correctement remplacé facilite le débogage en imprimant des informations importantes.
  2. Si un objet important est stocké dans une collection, l'impression de la collection appellera la méthode toString de l'objet stocké, qui peut imprimer les informations importantes. Un exemple classique de méthode toString non substituée est Array en Java, qui imprime le résultat de l'implémentation par défaut au lieu du contenu du tableau. Bien qu'il existe plusieurs façons d'imprimer le contenu d'un tableau en utilisant Arrays.toString() et autres ; mais comme Array est un objet Java, ce serait bien mieux s'il savait s'imprimer, tout comme les classes de collection comme List ou Set .

Ce ne sont là que quelques-uns des avantages que vous obtiendrez en implémentant ou en remplaçant la méthode toString en Java . Il existe de nombreux autres avantages que vous obtiendrez et apprendrez par vous-même. J'espère que ces conseils vous aideront à tirer le meilleur parti de vos implémentations de toString. Faites-nous savoir si vous connaissez des façons uniques de travailler avec toString qui vous aident dans vos applications Java.

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