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 1)

Publié dans le groupe Random-FR
10 conseils pour remplacer la méthode toString() en Java - ToStringBuilder Netbeans Eclipse 10 conseils pour remplacer la méthode toString() en Java (partie 1) - 1

Méthode Java toString

toStringLa méthode en Java est utilisée pour fournir des informations claires et suffisantes sur un objet ( Object) sous une forme lisible par l'homme. Une substitution de méthode appropriée toStringpeut aider à la journalisation et au débogage d'un programme Java en fournissant des informations précieuses et importantes. Puisqu’elle toString()est définie dans java.lang.Objectune classe et que son implémentation par défaut ne fournit pas beaucoup d’informations, il est toujours préférable de remplacer cette méthode dans une classe descendante. En fait, si vous créez une classe importante ou générale de type Order, Tradeor Employee, remplacez toujours equals , hashCode , compareTo et toStringles méthodes en Java. Par défaut, l'implémentation toStringproduit une sortie sous la forme , package.class@hashCodepar exemple pour notre exemple la méthode de classe imprimera test.Country@18e2b22 où 18e2b22 est le code de hachage de l'objet en hexadécimal, si vous appelez la méthode hashCode elle renverra 260943370 qui est le équivalent décimal de 18e2b22. Ces informations ne sont pas particulièrement utiles lors de la recherche d'un problème. Regardons un exemple concret où vous devez trouver un problème dans votre connexion réseau. Dans le cas où vous voudriez savoir à quel hôte et à quel port votre système essaie de se connecter et si ou imprime uniquement les informations par défaut, ce sera impossible d'imaginer le vrai problème, mais avec une implémentation remplacée, ils peuvent fournir des informations utiles telles que le nom d'hôte et le numéro de port. Dans ce didacticiel Java, nous donnerons quelques conseils sur le remplacement de méthode avec des exemples de code. toString()toString()CountrySocketServerSockettoStringtoStringtoString

Comment remplacer la méthode toString en Java :

Imprime la date formatée (c'est-à-dire jour/mois/année) au lieu de la valeur brute. C'est un indice très utile lors du remplacement d'une méthode Java toString. toString()La classe normale java.util.Datene génère pas de date formatée et inclut de nombreux détails qui ne sont pas toujours nécessaires. Si vous utilisez un DateFormat partiel , c'est-à-dire jj-MM-aa dans votre application, vous voudriez certainement voir ce format au lieu de celui par défaut. L'EDI ne génère généralement pas de sortie formatée Dateet c'est quelque chose que vous devrez faire vous-même, mais cela en vaut la peine. Lisez Comment imprimer la date au format jjMMaa en Java pour plus de détails sur le formatage Dateen Java. Vous pouvez également utiliser la classe SimpleDataFormat ou la bibliothèque horaire Joda Date pour cela.

Documenter le format toString

Si votre méthode toString()ne génère pas de données sous la forme field=value, alors c'est une bonne idée de documenter le format de sortie toString, en particulier pour les objets importants comme Employee ou Student. Par exemple, si une méthode toString()de classe Работник(Employee)imprime " John-101-Sales-9846387321 ", alors une bonne pratique serait de spécifier le format comme " nom-id-department-contact ", mais en même temps, ne permettez pas au client d'obtenir informations de la méthode toString(), vous devez toujours fournir des méthodes appropriées pour récupérer les données, telles que getName(), getId(), getContact()etc., car les informations obtenues à partir toString()de la représentation d'objet sont fragiles et sujettes aux erreurs, le client doit donc toujours disposer d'un chemin propre pour obtenir le information.

Utilisez StringBuilder pour composer la sortie de toString()

Si vous écrivez du code pour une méthode toString()en Java, utilisez StringBuilder pour ajouter des attributs individuels. Si vous utilisez un IDE comme Eclipse , Netbeans ou IntelliJ, utiliser StringBuilderla méthode and append()au lieu de l'opérateur + pour composer toStringest également la voie à suivre. Par défaut, Eclipse et Netbeans génèrent toStringavec l'opérateur de concaténation.

Utilisation de l'annotation @Override

L’utilisation @Overridedu remplacement de méthode en Java est l’une des meilleures pratiques du langage. Mais cet indice n'est pas aussi important qu'il le serait dans le cas de la substitution des méthodes equals()and compareTo(), car une surcharge au lieu d'une substitution peut créer des erreurs plus subtiles et difficiles à calculer. Dans tous les cas, il est préférable d'utiliser l'annotation @Overrride.

Imprimer le contenu d'un tableau au lieu d'imprimer l'objet tableau

Un tableau est un objet en Java mais il ne remplace pas une méthode toStringet lorsque vous imprimez un tableau, le format de sortie par défaut n'est pas très utile car nous aimerions voir le contenu du tableau. À propos, c'est une autre raison pour laquelle le tableau char[] est préférable à String pour stocker des données sensibles telles qu'un mot de passe. Prenez le temps de voir si l'impression du contenu d'un tableau aide ou non vos clients, et si cela a du sens, imprimez le contenu du tableau au lieu de l'objet lui-même. Pour des raisons de performances, il est préférable d'utiliser Collectiontel ArrayListou HashSet pour Arraystocker d'autres objets.

Conseils bonus

Quelques conseils supplémentaires sur le remplacement de méthode toStringen Java.
  1. Imprimez la sortie toStringsur plusieurs lignes ou sur une seule en fonction de sa longueur.

  2. Incluez les noms de classe complets dans la représentation toString, en d’autres termes package.classpour éviter tout malentendu.

  3. Vous pouvez ignorer les valeurs nulles ou les afficher, mais il est préférable de les afficher. Parfois, ils sont utiles car ils montrent quel champ est présent nulllors d'un incident, par exemple NullPointerException .

  4. Utilisez un format clé-valeur, par exemple member.name=member.value, la plupart des IDE le prennent en charge.

  5. Incluez les membres hérités si vous pensez qu’ils doivent fournir les informations nécessaires à la classe héritière.

  6. Parfois un objet contient de nombreux paramètres facultatifs et obligatoires, comme nous l'avons montré dans notre exemple de modèle Builder , lorsqu'il est quasiment impossible d'imprimer tous les champs, dans ce cas nous pouvons imprimer uniquement les champs obligatoires, d'autant plus que nous en avons des facultatifs.

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