ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

lombok——@EqualsAndHashCode(callSuper = true)注解的和exclude使用

2022-06-27 11:03:14  阅读:222  来源: 互联网

标签:EqualsAndHashCode callSuper code 子类 equals exclude 父类 属性


  • 此注解会生成equals(Object other) 和 hashCode()方法。
  • 它默认使用非静态,非瞬态的属性
  • 可通过参数exclude排除一些属性
  • 可通过参数of指定仅使用哪些属性
  • 它默认仅使用该类中定义的属性且不调用父类的方法

实现equals, hashCode方法是在编程生活中再常见不过的一个东西了,那么自然@EqualsAndHashCode 这个annotation就成为了一个非常方便的工具。默认情况下,被这个annotation标注的class会用到除了 static,transient修饰的所有属性作为判断标准,当然和之前的annotation一样,可是使用exclude选项除掉不想要的属性。也可以通过callSuper包含父类的equals 和 hashCode。 当然如果你的class 没有继承任何其他的class,你却写了callSuper,那么会收获一个编译报错。

@EqualsAndHashCode(callSuper = true)
该注解用于子类对象之间进行比较的时候

不加该注解的影响:子类对象属性值一致,但其继承的父类对象属性值不一致,在比较的时候会出现比较结果不对的情况。
1.
假如父类有个code属性 子类有个name属性
然后创建两个子类对象 子类的name值都一样 code值不一样
此时两个子类equals 则返回的是true

2.如果父类加上了@EqualsAndHashCode(callSuper = true)
假如父类有个code属性 子类有个name属性
然后创建两个子类对象 子类的name值都一样 code值不一样
此时两个子类equals 则返回的是false

标签:EqualsAndHashCode,callSuper,code,子类,equals,exclude,父类,属性
来源: https://www.cnblogs.com/zh76412950/p/16415443.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有