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

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

为什么传递的是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 回答

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

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

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

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

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409792    人
  • 解答问题       4340    个

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

进入课程

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

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