Méthode toString()

Transformation d'un objet en String

Ce site ne sera plus alimenté de contenu après août 2014. Tous les nouveaux articles seront redigés pour www.waitingforcode.com

Les méthodes de débuggage entre PHP et Java diffèrent. Dans ce premier langage, une partie des développeurs préfère afficher le résultat d'une variable directement sur l'écran. Et pour cela, ils peuvent utiliser un echo tout bête ou un var_dump plus complexes. En Java ce mode peut être très fatiguant à implémenter.

En Java l'affichage du résultat d'une méthode sur l'écran peut être une tâche chronophage. Contrairement au PHP, il est obligatoire de compiler les fichiers et, dans le cas d'une application web, relancer le serveur. C'est pourquoi Java fournit plein de moyens qui permettent d'améliorer le débugage. L'un des moyens mis à disposition est la méthode toString(), existante également en PHP en tant qu'une méthode magique.

Cette fonction sert avant tout à afficher les informations sur un objet en format facilement lisible par un être humain. Elle est donc utilisée partout où Java veut afficher directement l'instance d'une classe. Parmi les méthodes qui appelent toString() on peut distinguer : println(), print(), printf() ainsi que la plupart des classes gérant les logs.

Si la méthode toString() n'est pas surchargée, par défaut sera affiché le nom de la classe avec le hashcode de l'objet. Le format de la réponse par défaut est le suivant : package.className@hashCode. Constatons tout cela sur un exemple :

afficher le code

Et le résultat sur l'écran est le suivant :

Result for NotImplemented instance is NotImplemented@9304b1
Result for Implemented instance is [Implemented] User's implemented favorite colors are : green, blue.

Comment bien surcharger toString() en Java ?

On remarque bien les deux fonctionnements différents. Le premier implémente le comportement par défaut qui affiche le nom de la classe, éventuellement précédé par le nom du package, suivi par le hashCode. Le deuxième exemple illustre l'implémentation plus précise de la méthode toString(), très utile pour le débugage.

Dans le code on voit également la présence d'une annotation @Override. Son utilisation est conseillée pour éviter d'éventuels problèmes avec des annotations en Java.

Une vérification si ArraList n'est pas nulle est également présente. Elle doit servir à éviter les NullPointerException en Java.

Un autre point important peut être le placement du nom de la classe à laquelle appartient l'objet ([Implemented] dans le code ci-dessus). Cela peut aider à éviter toute confusion dans le cas des projets d'une grande échelle.

Même si l'implémentation de toString() en Java dépend de la créativité du développeur, il faut garder en tête le caractère principal de cette méthode qui est l'utilité dans le débuggage. Certains attributs d'une classe peuvent prendre forme d'un paire "clé-valeur" (par exemple une Map). Dans ces cas il vaut mieux les retourner sous le même format (par exemple : 1 = a pour une Map contenant la clé 1 et la valeur a).

Dans tout ce qui est concaténation des valeurs très longues, son utilité peut trouver la classe StringBuilder. Elle permet, avec l'utilisation de la méthode append(), de concaténer clairement les attributs de la classe. Ceci peut être plus lisible qu'une multitude des +=.

Bartosz KONIECZNY Informations sur le langage

Une question ? Une remarque ?

*

*

Un conseil MySQL

Comment importer un fichier SQL depuis la console ?

L'importation des fichiers .sql se déroule avec la commande suivante :

mysql -u root --password=root -h 127.0.0.1 -D myDatabase < tab_to_import.sql