提问: java 编程思想说"要在自己的新类中覆盖 equals()方法"是什么意思? 请举个栗子

2016-02-05 15:36:24 +08:00
 yuntong

我不知道如何贴图片, 所以就把图片传到贴吧了
http://tieba.baidu.com/p/4340216061

2480 次点击
所在节点    问与答
7 条回复
Bryan0Z
2016-02-05 15:55:29 +08:00
噗,比如你的类 human 有个属性 name(String 类型),你希望通过这个属性比较两个类是否相同

boolean equals(human a){
return this.name.equals(a.name);
}
Bryan0Z
2016-02-05 15:56:30 +08:00
上面那个例子和代码都不好,楼主别打我(逃
wanghui
2016-02-05 16:30:10 +08:00
默认 equals 比较两个对象地址是否相等,重写 equals 可以在语意上判断两个对象是否相等
xuhaoyangx
2016-02-05 16:36:39 +08:00
楼上解释很清楚
wizardforcel
2016-02-05 19:35:48 +08:00
覆写 equal ,以及 hashcode 。

其实不用你自己写, ide 能够选择加入的字段自动生成。

如果你不自己写,就会调用 object 上的,效果是比较地址。没有两个对象的地址是一样的。
yanguango
2016-02-05 20:05:42 +08:00
如果你的类的对象要作为 hashtable 的 key ,你的类就必须实现 equals 和 hashCode, 原因见 hastable 的原理
msg7086
2016-02-06 03:19:53 +08:00
传图片可以用 imgur.comsm.ms

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/255538

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX