子类继承时的@Data使用

一直用的都是@Data,省去了写set、get、equal之类方法。但是有一次发现子类继承父类的时候使用@Data会有报警信息。
在这里插入图片描述
翻译一下就是子类的equals和hashCode方法,不会有父类的属性。我们可以查看项目target/classes目录下的该类的hashCode方法,默认情况下属性都是使用的他自身的属性。
具体的子类如下图:
在这里插入图片描述
编译后class文件里的方法如下图:
在这里插入图片描述
在这里插入图片描述
可以看到只用了子类自己的属性,可以跟据提示加上注解@EqualsAndHashCode(callSuper = true),即可解决。
在这里插入图片描述
还在网上看到另外一种更简便的写法,
在stackoverflow上,就有人提出了这个问题:https://stackoverflow.com/questions/38572566/warning-equals-hashcode-on-data-annotation-lombok-with-inheritance,另外,lombok作者Roel也给出了解决办法,就是通过自定义lombok.config文件来解决。

按照Roel的说法,lombok.config文件需要放在src/main/java文件夹下的目录中(也可以放在实体同级目录下),放在src/main/resources目录下,不会生效。下面,我们通过这种方式来解决这个警告的问题。

1、新建lombok.config文件,然后配置:

config.stopBubbling=true
lombok.equalsAndHashCode.callSuper=call

2.pom.xml文件中需要加入如下插件:

<plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
          <source>1.8</source>
          <target>1.8</target>
      </configuration>
</plugin>

参考文献“参考1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值