问答详情
源自:6-1 学生选课---判断 List 中课程是否存在

重写equals方法

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

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

提问者:南国雨 2015-07-10 19:33

个回答

  • 康振宁
    2015-07-13 15:42:49
    已采纳

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

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

    比较思路:

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

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

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

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


  • 南国雨
    2015-07-14 09:29:18

    好的,已看到,谢谢!