La méthode toString est définie dans la classe Object ; en conséquence toutes les classes Java en hérite. La méthode toString définie dans la classe Object ne fait pas grand-chose : elle renvoie le nom de la classe de l'objet concerné suivi de l'adresse de cet objet. Lorsqu'on définit une classe, il peut être très utile de redéfinir la méthode toString afin de donner une description satisfaisante des objets de cette classe. Beaucoup de classes de l'API redéfinissent la méthode toString.
La méthode toString, définie dans la classe Object, admet pour prototype :
public String toString();
Quand on redéfinit la méthode to String, on fait
en sorte qu'elle renvoie une chaîne de caractères servant
à décrire l'objet concerné.
Rappelons par exemple la méthode toString figurant dans la classe Compte définie dans un chapitre précédent
public String toString() {Pour un compte c dont les attributs numero, proprietaire et montant valent respectivement 2, Irene et 85, l'instruction :
return "Compte numero " + this.numero +
" : proprietaire " + this.proprietaire +
", montant " + this.montant;
}
Les explications ci-dessous précisent le mécanisme et l'usage de la méthode toString.
La méthode statique valueOf(Object obj) de la classe String appliquée à un objet obj :
- renvoie obj.toString() si obj ne vaut pas null ; si obj référence un objet de la classe A, l'appel à obj.toString() exécute la méthode toString de la classe ancêtre de la classe A la plus proche de A, selon le principe de la liaison dynamique ;
- renvoie null dans le cas contraire.
La méthode toString est employée via la méthode valueOf par :
Nous conseillons vivement de redéfinir la méthode toString lorsque la classe construite s'y prête. On doit attribuer le modificateur public pour redéfinir cette méthode car on ne peut pas redéfinir une méthode en diminuant son niveau de visibilité. Nous reviendrons sur les niveaux de visibilité.
© Irène Charon Télécom ParisTech 2012