equals的重写不太明白

做多做少不如做好 2019-11-03 06:10:41
Obeject类的equals()方法如下:
public boolean equals(Obeject obj){
return this==obj
}
这个比较的是地址,要比较他们的属性要重写对么?
public Boolean equals(Obeject obj){
if(obj instanceof Employee){
Employee e=(Emoloyee)obj;
return e.id.equals(this.id)&&e.name.equals(this.name);
}
return false;
}
不明白什么是e.id.equals()?
而且这个equals是重写的equals还是Object的equals呢?如果是重写的为什么不会无限循环?
...全文
152 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
maradona1984 2019-11-05
  • 打赏
  • 举报
回复
不同类的方法而已,你对java的内存模型认知存在偏差,及早纠正
qq_39936465 2019-11-05
  • 打赏
  • 举报
回复
这里用的是e.id ,id变量一般是int或string,也就是说e.id.equals调用的应该是int或string类中的equals,同理e.name也一样。 这里不是调用的e.equals所以一般是不会循环的
qq_39936465 2019-11-05
  • 打赏
  • 举报
回复
引用 楼主 一方 通行 的回复:
不明白什么是e.id.equals()? 而且这个equals是重写的equals还是Object的equals呢?如果是重写的为什么不会无限循环?
看程序不懂的话就要联系起来一起看,你要先看懂 Employee 这个类。 这里e代表Employee类的一个实例,id和name是Employee类中其中2个变量,重写的equals是用来比较2个Employee实例中的id和name是否都相等。 我不知道你为什么会想到无限循环,一般是不可能无限循环的,子类重写父类方法调用的方法都是子类重写后的方法怎么会和循环联系起来。
qybao 2019-11-03
  • 打赏
  • 举报
回复
这取决于你的id的类型,如果你的id也是Employee类型,那确实会无限循环(无限递归)
如果不是,那调用的本来就不是同一个equals,所以不会无限循环
  • 打赏
  • 举报
回复
还有这种写法么,e.id.equals,在编译器里不报错么

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧