重写的equals函数里面有问题,大神求解!!

来源:6-1 学生选课---判断 List 中课程是否存在

qq_心念如灰_0

2017-07-13 20:16

为什么传递的是Object类,我们比较的不是一个具体的它的子类嘛。

public boolean equals(Object obj) {

if (this == obj)//这条意思是本身的类也是Object类,且地址相同?

return true;

if (obj == null)

return false;

if (!(obj instanceof Course))//有了这个IF第一条if有啥用呢,只要这一个不就好了,只要他俩不是同一个类型就是False。

return false;

Course other = (Course) obj;//前面不是已经判断了这俩个类型相等,为什么还要强制转换

if (name == null) {

if (other.name != null)

return false;

} else if (!name.equals(other.name))

return false;

return true;

}


写回答 关注

2回答

  • earlsun
    2017-07-14 16:24:42

    这样写比较通用,写父类,比较一切子类都没问题,如果只写String类,那么其他类不是不能比较了么

  • 慕粉1755566304
    2017-07-14 12:02:59

    我的看法:首先地址相同肯定是true,其次在地址不相同的情况下,obj和Course类型不同,一定是false,最后,判断归判断,只有将obj强转为Course才能进行接下来的判断

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题