当设置@EqualsAndHashCode(callSuper=true)时,会调用父类的equals()方法假设父类是Object,Object默认的euqals()方法会是判断两个类地址是不昰相等等于说这样间接的把子类的equals()设置为了“==”判断,并且在这之前还加了许多无谓的逻辑判断代码如下:
很显然,两个子类忽略了父类属性比较这并不是因为父类的属性对于子类是不可见——即使把父类private属性改成protected,结果也是一样——而是因为lombok自动生成的equals()只比较子类特有的属性
- 用了 @data 就不要有继承关系,类似kotlin的做法
- 自己重写equals()lombok不会对显式重写的方法进行生成