L’écriture des méthodes toString() est une tâche répétitive et peu gratifiante. Pourtant cette méthode est très pratique pour les traces applicatives. C’est pourquoi, il est recommandé de l’automatiser.

Dans sa version sans extension, Eclipse ne permet pas de générer les méthodes toString() des JavaBeans. Heureusement, il existe de nombreux plugins qui permettent de le faire. Six projets sont présentés ci-dessous :

  • ToString Generator génère les méthodes toString() JavaBean par JavaBean. Il est possible de choisir le séparateur et champ et si la méthode existe déjà il demande la confirmation avant de l’écraser. La fonction n’est pas accessible dans la perspective Ressource, mais seulement dans la perspective Java et J2EE (WTP).
  • CodeSugar propose la génération des méthodes hashCode(), equals(), clone() et toString(). Il est possible d’écraser systématiquement l’ancienne méthode. L’outil permet également d’autres manipulations sur les JavaBeans. Il est regrettable qu’il ne soit pas possible de paramétrer le séparateur de champ.
  • Commons4E génère du code en se basant sur la bibliothèque Jakarta Commons Lang pour implémenter les méthodes hashCode(), equals(), compareTo() et toString(). Il supporte l’héritage et propose différents modèles de représentation pour les JavaBeans. Dommage qu’il soit nécessaire de sélectionner à chaque fois le modèle à utiliser et que le séparateur de champ ne soit pas paramétrable.
  • Commonclipse reprend le même principe que le précédent plugin. Il a l’avantage d’enregistrer les paramètres pour la génération des méthodes et surtout il permet de générer les méthodes pour une liste de fichiers sources ! En revanche il n’est pas possible de choisir les champs à utiliser pour la méthode toString().
  • CodeRelief permet de générer le code source à utiliser pour les méthodes hashCode(), equals() et toString(). Il se révèle très peu pratique car il faut créer soit-même la méthode puis faire un copier/coller du code généré.
  • JUtils ToString Generator autorise la création d’un constructeur par copie ainsi que de la méthode toString(). Le code source généré est totalement paramétrable de façon simple et supporte l’héritage. Il est possible d’obtenir quelque chose de propre en modifiant le modèle de la méthode toString() fourni par défaut. La génération de code n’est accessible que dans la perspective Java par contre elle peut se faire pour plusieurs fichiers en même temps.

Le point positif est que la plupart de ces outils utilisent un StringBuffer pour le code généré. Commons4E retient l’attention, mais la dépendance du code généré avec Jakarta Commons Lang est fortement regrettable. ToString Generator ne propose que la génération de la méthode toString() et le fait très bien. Néanmoins JUtils ToString Generator reste l’outil le plus souple, même s’il ne supporte pas les champs de type Array ou Collection. Mais cela doit être réalisable avec le paramétrage du modèle.

Pour finir, voici un modèle personnalisé plus pratique que celui fourni par défaut :

public String toString() {
 StringBuffer sb = new StringBuffer("");
 sb.append("${class_name}(").
 append(super.toString()).
 append(",").
 append("${attribute}=").
 append(this.${attribute}).
 append(")");

 return sb.toString();
}