Je travaille sur un projet de test unitaire où les asserts appellent la méthode .equals. Cependant les personnes sur le projet avant n'ont pas généré ces méthodes.Toutes les classes doivent-elles avoir une méthode .equals et .hashcode?
Est-ce considéré comme une bonne pratique de générer automatiquement ces méthodes lorsque vous codez? Est-ce que tous les codeurs devraient le faire?
Je cherchais plus d'informations sur la méthode .equals et .hashcode et la plupart d'entre eux semblent être orientés vers la façon de les implémenter ou de les contourner.
Dépend de l'objectif de la classe. Pour de nombreuses classes, l '"identité" implémentée par les méthodes 'equals' et' hashCode' héritées de 'Object' est très bien. – Henry
Si vous avez besoin de comparer des objets de ces types, vous devez remplacer 'equals', et' hashCode', aussi 'hashCode' doit généralement être surchargé lorsque vous placez vos objets dans un hashmap (mais dans la plupart des cas pas nécessaire) . Généralement, si l'un est remplacé, l'autre est également remplacé. – SomeDude
Il n'est jamais bon de * générer * automatiquement une méthode 'equals'. Peu de classes définissent logiquement leur identité par tous leurs champs d'état, ce que je suppose être ce que ferait une méthode 'equals' générée automatiquement. Si des instances doivent être vérifiées pour l'égalité, écrire une méthode sensible 'equals' et une méthode' hashCode' à la main. – VGR