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个对象但是会覆盖(虽然我们业务逻辑上认为他们相等)。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
java链表数据结构LinkedList插入删除元素时间复杂度面试精讲
这篇文章主要为大家介绍了java LinkedList插入和删除元素的时间复杂度面试精讲,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-10-10
IDEA 中使用 Big Data Tools 连接大数据组件
本文主要介绍了IDEA 中使用 Big Data Tools 连接大数据组件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-05-05
idea ssm项目java程序使用十六进制rxtx包向串口发送指令的方法
这篇文章主要介绍了idea ssm项目java程序向串口发送指令并且使用十六进制 rxtx包,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-08-08
在navicat中导入mysql数据库详细步骤(即.sql后缀的数据库)
Navicat是MySQL非常好用的可视化管理工具,功能非常强大,能满足我们日常数据库开发的所有需求,下面这篇文章主要给大家介绍了关于如何在navicat中导入mysql数据库(即.sql后缀的数据库)的相关资料,需要的朋友可以参考下2023-04-04


最新评论