155 votes

Warning est égal à / hashCode sur l'annotation @Data lombok avec héritage

J'ai une entité qui hérite de l'autre. Sur l'autre main, je suis à l'aide de lombok projet afin de réduire code réutilisable, donc j'ai mis @Data d'annotation. L'annotation @Data avec l'héritage produit de l'avertissement suivant:

La génération est égal à/hashCode de la mise en œuvre, mais sans un appel à la super-classe, même si elle ne s'étend pas java.lang.Objet. Si c'est intentionnel, ajoutez - @EqualsAndHashCode(callSuper=false) de votre type.

Est-il conseillé d'ajouter l'annotation @EqualsAndHashCode (callSuper = true) ou @EqualsAndHashCode (callSuper = false)? Si elle n'est pas ajoutée, Dont l'un est-il callSuper=false ou callSuper=true?

168voto

Roel Spilker Points 2807

La valeur par défaut est false. C'est celui que vous obtenez si vous ne spécifiez pas, et d'ignorer l'avertissement.

Oui, il est recommandé d'ajouter un @EqualsAndHashCode annotation sur l' @Data annoté des classes qui étendent autre chose que de l'Objet. Je ne peux pas vous dire si vous avez besoin d' true ou false, cela dépend de votre classe de la hiérarchie, et devront être examinées au cas par cas.

Toutefois, pour un projet ou d'un package, vous pouvez le configurer en lombok.config d'appeler le super méthodes, si ce n'est pas une sous-classe directe de l'Objet.

lombok.equalsAndHashCode.callSuper = call

Voir le système de configuration de la documentation sur la façon dont cela fonctionne, et l' @EqualsEndHashCode de la documentation pour la pris en charge de la configuration des touches.

Divulgation: je suis un lombok développeur.

67voto

noscreenname Points 1788

@EqualsAndHashCode(callSuper=true) devrait résoudre l'avertissement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X