lombok的@EqualsAndHashcode注解详解
作者:Old Wang
这篇文章主要介绍了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个对象但是会覆盖(虽然我们业务逻辑上认为他们相等)。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。