前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >lombok中@EqualsAndHashCode注解的使用

lombok中@EqualsAndHashCode注解的使用

作者头像
关忆北.
发布2021-12-07 16:40:45
6960
发布2021-12-07 16:40:45
举报
文章被收录于专栏:关忆北.关忆北.

现有Person实体类,具有名字和身份号码两个属性,身份证号可代表数据的唯一性。

代码语言:javascript
复制
    class Person{
        private String name;
        private String identity;
        
        public Person(String name, String identity) {
            this.name = name;
            this.identity = identity;
        }
        //省略get/set方法
     }

需求: 我需要比较两条数据中是否为同一个人

根据姓名查找,会从数据库中返回多条名字相同的数据,那么我们需要使用身份证号去判断名字相同的多个对象是否为同一个人,哪么只需要使用身份证号码判断即可。

代码语言:javascript
复制
Person person1 = new Person("name1","001");
Person person2 = new Person("name2","002");
log.info(person1.equals(person2));

如果这样比较的话,一定会返回false 那么这个时候可以使用@EqualsAndHashCode.Exclude注解忽略掉name字段,从equals和hashCode的实现中排除name字段。

代码语言:javascript
复制
    class Person {
        @EqualsAndHashCode.Exclude
        //new 两个对象  身份证数据一致 但是名字不一样  使用equals比较两个对象返回false
        //可以使用lombok的该注解修饰name字段,从equlas和hashCode中忽略name字段
        private String name;
        private String identity;

        public Person(String name, String identity) {
            this.name = name;
            this.identity = identity;
        }
    }

再执行便仅仅根据id进行比较两个对象啦。

lombok在继承中使用时,默认实现没有父类属性。 解决方案:

代码语言:javascript
复制
@EqualsAndHashCode(callSuper = true)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-04-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档