当前位置: 首页 > news >正文

Lombok的hashCode方法

Lombok对于重写hashCode的算法真的是很经典,但是目前而言有一个令人难以注意到的细节。在继承关系中,父类的hashCode针对父类的所有属性进行运算,而子类的hashCode却只是针对子类才有的属性进行运算,立此贴提醒自己。

目前重写hashCode的注解有@Data,@EqualsAndHashCode

首先 @EqualsAndHashCode 标在子类上

  1. callSuper = true,根据子类自身的字段值和从父类继承的字段值 来生成hashcode,当两个子类对象比较时,只有子类对象的本身的字段值和继承父类的字段值都相同,equals方法的返回值是true。

  2. callSuper = false,根据子类自身的字段值 来生成hashcode, 当两个子类对象比较时,只有子类对象的本身的字段值相同,父类字段值可以不同,equals方法的返回值是true。

public class HashCodeTest {public static void main(String[] args) {Cat cat1 = new Cat("黑色", "旺财", 2);Cat cat2 = new Cat("白色", "旺财", 2);System.out.println(cat1.equals(cat2));}
}@Data
@NoArgsConstructor
@AllArgsConstructor
class Animal {private String color;
}@Data
@EqualsAndHashCode(callSuper = true) //父类字段
class Cat extends Animal {private String name;private Integer age;public Cat(String color, String name, Integer age) {super(color);this.name = name;this.age = age;}
}
http://www.lryc.cn/news/388640.html

相关文章:

  • 关于springboot创建kafkaTopic
  • OOAD的概念
  • Day47
  • 【面试系列】后端开发工程师 高频面试题及详细解答
  • mac|浏览器链接不上服务器但可以登微信
  • Spring Cloud Alibaba之负载均衡组件Ribbon
  • tkinter显示图片
  • 000.二分查找算法题解目录
  • 数据资产赋能企业决策:通过精准的数据分析和洞察,构建高效的数据资产解决方案,为企业提供决策支持,助力企业实现精准营销、风险管理、产品创新等目标,提升企业竞争力
  • 【java开发环境】多版本jdk 自由切换window和linux
  • MySQL实训项目——餐饮点餐系统
  • 昇思MindSpore学习总结七——模型训练
  • AI时代创新潮涌,从探路到引路,萤石云引领千行百业创新
  • 计算机毕业设计Python深度学习美食推荐系统 美食可视化 美食数据分析大屏 美食爬虫 美团爬虫 机器学习 大数据毕业设计 Django Vue.js
  • 【鸿蒙学习笔记】鸿蒙ArkTS学习笔记
  • 广东行政职业学院数据智能订单班开班暨上进双创工作室签约仪式圆满结束
  • python与matlab微分切片的区别
  • MSPG3507——蓝牙接收数据显示在OLED,滴答定时器延时500MS
  • Linux 安装 Redis 教程
  • 【高考志愿】建筑学
  • Kubernetes的发展历程:从Google内部项目到云原生计算的基石
  • /proc/config.gz
  • 论坛万能粘贴手(可将任意文件转为文本)
  • 学习笔记——动态路由——OSPF(OSPF协议的工作原理)
  • Mybatis1(JDBC编程和ORM模型 MyBatis简介 实现增删改查 MyBatis生命周期)
  • 论文阅读YOLO-World: Real-Time Open-Vocabulary Object Detection
  • SM2的签名值byte数组与ASN.1互转
  • 云计算与生成式AI的技术盛宴!亚马逊云科技深圳 Community Day 社区活动流程抢先知道!
  • 【鸿蒙学习笔记】基础组件Progress:进度条组件
  • 前程无忧滑块