问题背景
用Lombok的@Data注解的时候,因为封装了一个公共的Base基础类,总是会提示以下警告提示:
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 注解的一般检查。
具体会有哪些问题呢?
Generating equals/hashCode implementation but without a call to superclass。就是父类的属性不会自动加上。
有点让人不喜。
解决办法
给的建议是直接增加以下注解进行解决
@EqualsAndHashCode(callSuper = true)
问题是可以解决,但是每个都要改,特别是微服务的这种比较大的工程。修改起来就麻烦多了。
有没有什么好办法,这个还真是有。
现在可以直接在工程的根目录或者src目录下下创建一个lombok.config文件。
然后再在里面添加两行代码就可以去掉了。
config.stopBubbling=true
lombok.equalsAndHashCode.callSuper=call
然后再看代码,发现@Data的波浪线没了。
总结
根据阿里的编码规范,如果重写了equals必须要重写hashCode方法。如果不重写可能会导致某些基于散列的数据结构(例如HashSet、HashMap等)出现问题。
所以最好对于有一些警告,能处理就处理掉