转载-原文连接

开发的时候遇到了这个警告
产生原因
当我们给一个继承了父类的子类上使用@Data @ToString @EqualsAndHashCode 注解时,IDE 会警告
其意思是,该注解在实现 ToString EqualsAndHashCode 方法时,不会考虑父类的属性,通过反编译的源码也是可以看到他是没有对父类的字段进行比较的
解决
1、解决方式一:直接在子类上声明 @EqualsAndHashCode(callSuper = true)
2、解决方式二:在项目的src/main/java根目录下创建lombok配置文件
请注意,该方式有版本要求,最低为lombok 1.14
如果是IDEA ,创建该配置文件会被IDEA 以一个黄色的小配置图标进行显示
配置文件(lombok.config)的配置内容如下
config.stopBubbling=true
lombok.equalsAndHashCode.callSuper=call
1、config.stopBubbling=true
该配置声明这个配置文件是一个根配置文件,他会从该配置文件所在的目录开始扫描
2、lombok.equalsAndHashCode.callSuper=call
全局配置 equalsAndHashCode 的 callSuper 属性为true,这样就不用每个类都要去写了
3、lombok 配置的分层
lombok 配置文件支持分层,在根目录配置的的配置文件对全局生效,如果某个子包中也有配置文件,则子包的类优先以子包中的配置为准
当使用Lombok的@Data、@ToString和@EqualsAndHashCode注解时,IDE可能会发出警告,因为默认情况下这些注解不包含父类属性。解决方法有两种:一是直接在子类上添加@EqualsAndHashCode(callSuper=true),二是创建lombok配置文件(lombok.config),设置config.stopBubbling=true和lombok.equalsAndHashCode.callSuper=call。这样可以全局配置equalsAndHashCode的callSuper属性,避免在每个类中重复指定。
2万+

被折叠的 条评论
为什么被折叠?



