为了账号安全,请及时绑定邮箱和手机立即绑定

重写equals方法

如果三个前三个If都通过了话,说明obj就是Course类型了,那么为什么还要写 Course course=(Course)obj;

为什么还要把obj强制转化成obj类型了呢?

正在回答

1 回答

equals方法是有Object类定义的,所有类型都必须要有此方法,因此其参数必须是Object类型的对象,其功能是比较两个对象的值是否相等,如果相等则返回true否则返回false。

当我们覆写此方法的时候即希望能够能够比较同种类型的两个对象,如上题的,Course类型的对象。

比较思路:

1、先判断地址,如果地址一样则是同样一个对象,则返回true,否则进行第2点的比较

2、如果要比较的对象是空(本对象(this)能调用equals方法肯定不为空),则返回false,否则进行第3点比较

3、如果要比较的对象不是当前本对象(this)的类型则返回false(猪和狗比较的结果是false),否则进行第4点比较

4、如果能运行到此处说明要比较的对象和本对象是同中类型(比较的基础),此时可根据需要自定义规则,如只要课程的名字一样则就认为其值相同。举个例子:一个人和另一个人比较的时候我们希望自要身份证号码和姓名相同则认为是同一个人返回true,这时候我们就可以做两判断,一个身份证号码和姓名是否相等的判断


0 回复 有任何疑惑可以回复我~
#1

南国雨 提问者

你好,我看了你的回复,挺细致的。 但是,有关你所说的第四点我还是有点不太明白。 我的问题是:按照你第四点所描述的,如果要比较的对象和本对象是同种类型的话,为什么还要写 Course course=(Course)obj; 这段代码,来进行类型转化呢? 呜呜!我就一直卡在这里了,希望能进一步得到你的指点! 谢谢!
2015-07-13 回复 有任何疑惑可以回复我~
#2

康振宁 回复 南国雨 提问者

你看一下问答下面的问题,有和你一样的,我也有过回答
2015-07-14 回复 有任何疑惑可以回复我~
#3

南国雨 提问者

非常感谢!
2015-07-14 回复 有任何疑惑可以回复我~

好的,已看到,谢谢!

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

重写equals方法

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信