lombok的@EqualsAndHashcode注解

有时候我们在实体类上面会使用@Data注解,这个注解带了@EqualsAndHashcode注解。

一、用法

①of 用来指明你要用什么字段来重写equals和hashcode(具体怎么重写看下文)

②callSuper 这个选项只能用在有父类情况下,如上图如果没有Father那么会报错。默认是false,当改成true后,会调用父类的equals方法(具体看下文例子)

那么上文中这样设置,new了2个child,不管是equals还是hashcode那么他们都是一样的

二、lombok是怎么重写equals和hashcode方法

equals:

父类:

子类:

 

hashcode:

父类:

子类:

 

总结:

1、使用了@EqualsAndHashcode注解,那么他们都将重写equals和hashcode方法,而这两个方法都是根据你of指定的属性(默认全部)而生成的。

2、继承时候父类通常也要加上该属性,否则equals为false,hashcode会不一样

3、使用集合类时候也要小心一点,例如hashmap,会造成2个对象但是会覆盖(虽然我们业务逻辑上认为他们相等)。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值