@EqualsAndHashCode踩坑记录

323 阅读1分钟

背景:

A extends B 在lombok中使用@EqualsAndHashCode

重写相关方法时发现了bug,查看target才发现是父类有些属性没有被算进去,查看了下面这篇帖子解决,原因是虽然子类继承了父类的所有属性,但是id还是属于父类的,这里我简单理解lombok查找属性的时候就是默认按照id查找的。

解决方案:

设置@EqualsAndHashCode(callSuper = true)

这里摘出@EqualsAndHashCode的说明

lombok.equalsAndHashCode.callSuper = [call | skip | warn] (default: warn)

If set to call, lombok will generate calls to the superclass implementation of hashCode and equals if your class extends something. If set to skip no such calls are generated. The default behaviour is like skip, with an additional warning.

参考的技术帖子 @EqualsAndHashCode注解的小坑,你踩中了吗?