关于idea生成equals()和hashCode()时两个类型匹配检查表达式的分析

请添加图片描述
官方解释如下:
在这里插入图片描述

instanceofgetClass()
允许子类实例与父类相等
允许不同子类的示例相互相等
重写生成的 equals 方法不违反其约定
避免额外的空检查
遵守Liskov替换原则(LSP)

注:Liskov替换原则(LSP)是一种面向对象编程的基本原则,它要求派生类(子类)对象能够替换其基类(父类)对象被使用,而程序逻辑不受影响。
要点如下:
① instanceof 表达式允许子类与父类对象进行比较,适用于希望支持多态性比较的场景,即允许子类对象与父类对象“相等”(如果子类没有增加新的字段,并且希望继承父类的相等性判断逻辑。如果子类添加了新的字段,并且没有重写equals()方法判断这些新字段,那么使用instanceof会导致判断不符合预期)。
② getClass()方法返回对象的运行类型。在equals()方法中使用getClass()比较表达式,实际上是比较两个对象的运行类型和对象是否完全相同。只有当两个对象属于同一个类且字段相同时,才认为它们相等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wistain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值