实现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
对象置于容器(如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
相关文章推荐
- java重写equals方法需要注意的几点
- java重写equals方法需要注意的几点
- java重写equals方法需要注意的几点
- java重写equals方法需要注意的几点
- java炒冷饭系列05 使用多态时需要注意的几点
- java 多线程中需要注意的几点
- Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)'
- Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null objec
- Java异常处理需要注意的几点
- JAVA之File类创建对象构造函数传参数需要注意的几点
- Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null objec
- Java基本语法学习时需要注意的几点
- Object-c中block需要注意的几点问题
- java.lang.Object 对象中 hashCode 和 equals 方法详解及其延伸
- Java使用HashMap进行遍历时候需要注意的几点
- ListView中使用type需要注意的东西 java.lang.ArrayIndexOutOfBoundsException: length=2; index=2 addScrapView
- 重写Java Object对象的hashCode和equals方法实现集合元素按内容判重
- JAXB实现XML和java对象互转以及soapXml和对象互转需要注意的地方
- Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null objec
- Ubuntu Linux下Java Web应用程序需要注意的几点问题