您的位置:首页 > 移动开发 > Objective-C

实现java.lang.Object.equals(Object)需要注意哪几点?

2012-05-13 20:10 549 查看
如果天下的对象,都只做直接的equals判断,那就相安无事了。可总有一些情况:

对象置于容器(如hashSet)中,而后进行equals判断;

对象与继承对象的子类间,进行equals判断;

……

【1】定义了错误的equals方法签名

NO: public boolean euqals(Pointer o);

YES: public boolean equals(Object o);

【2】重载了equals的但没有同时重载hashCode的方法

NO: no hashCode()

YES: public int hashCode() { return (41 * (41 + getX()) + getY()); }

【3】建立在会变化字域上的equals定义

NO: public int a;

YES: public final int a;

【4】不满足等价关系的equals错误定义

NO: 直接父、子对象对比;

YES: && this.getClass().equals(that.getClass())

学习:

/article/2551913.html

http://www.artima.com/lejava/articles/equality.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: