子类继承时的@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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@Data和@ToString是Java中的注解,用于简化代码并提供常见的方法。@Data注解可应用在类上,它会自动生成getter和setter方法、equals()和hashCode()方法以及toString()方法。而@ToString注解则只生成toString()方法。 在使用@Data注解,可以通过在子类上加上@Data和@ToString(callSuper = true)两个注解,同父类也使用@Data注解来解决继承关系下的问题。例如,可以定义一个Student类,使用@Data和@ToString(callSuper = true)注解,并继承自一个父类People,父类也使用@Data注解。这样就会自动生成子类的getter、setter和toString()方法,并在toString()方法中调用父类的toString()方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Java - 注解@Data和@ToString(callSuper = true)](https://blog.csdn.net/A_bad_horse/article/details/116058545)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Lombok常见用法总结——@Data,@Getter,@Setter,@NotNull,@ToString,@HashCode,@Builder等](https://blog.csdn.net/weixin_44712778/article/details/129365532)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值