0%

Warning: Generating equals/hashCode implementation but without a call to superclass

编译项目时,遇到这样一个错误提示。

1
2
Warning:(12, 1) Generating equals/hashCode implementation but without a call to superclass, even though
this class does not extend java.lang.Object. If this is intentional, add '(callSuper=false)' to your type.

这是由于我们使用lombok的@Data注解时造成的。使用@Data注解时,子类的equals和hashCode方法,默认是不比较父类的属性的。

1
2
3
4
5
6
7
public int hashCode() {
int PRIME = true;
int result = super.hashCode(); // 默认这句话是没有的
Object $ext = this.getExt();
result = result * 59 + ($ext == null ? 43 : $ext.hashCode());
return result;
}

解决方案有两个。

在类上再添加一个注解:@EqualsAndHashCode(callSuper = true)

这样有个问题就是,只要继承了其他类,都要加这个注解。

还有一个通用的解决方法,在src/main/java文件夹下面,注意,不是src/main/resources下面,添加配置文件lombok.config

文件里面的内容为:

1
lombok.equalsAndHashCode.callSuper=call