Il est recommandé, et parfois nécessaire, que les classes qui représentent des valeurs ( classes de valeurs ) pour remplacer le hashCode()
, equals()
[et éventuellement toString()
Les méthodes [ ]. Les valeurs renvoyées par ces méthodes dépendent de l'ensemble ou d'un sous-ensemble des variables membres de la classe et de sa super-classe. Pour les mettre en œuvre correctement, vous devez connaître un peu de théorie sur hachage et un peu d'algèbre et de théorie des ensembles (pas trop, et presque tout est expliqué dans le manuel). javadocs pour ces méthodes et dans Effective Java form Josh Bloch).
Dans la plupart des cas, la mise en œuvre de ces méthodes suit un modèle, et les IDE (comme Eclipse JDT) comprennent des outils pour les générer. Cependant, les générateurs d'outils ne peuvent pas faire d'hypothèses et génèrent ces méthodes en utilisant uniquement les constructions disponibles dans le langage et la bibliothèque standard. C'est pourquoi ces méthodes sont généralement très laides.
Une autre façon de mettre en œuvre ces méthodes est d'utiliser une bibliothèque comme celle d'Apache (commons-lang) HashCodeBuilder
, EqualsBuilder
y ToStringBuilder
. Grâce à ces utilitaires, il est possible de mettre en œuvre son propre système d'information. hashCode()
y equals()
qui sont beaucoup plus efficaces.
Ma question porte sur la combinaison de ces deux approches. J'aimerais pouvoir personnaliser l'interface utilisateur d'Eclipse. hashCode()
y equals()
ce qui les génère en utilisant HashCodeBuilder
et ses amis. Est-il possible (et comment) de le faire sans modifier le JDT ? Il suffit d'écrire un petit plugin qui remplacera les implémentations par défaut (mais sans modifier le code de la JDT).
Merci.