还有,当我们当前的类有特定的相等的定义的时候,而且我们的超类并没有改写equals()方法,就需要改写equals()方法了。
改写的规范-object必须满足:
1. 自反
2. 对称
3. 传递
4. 一致
5. X非空,x.equals(null)返回false
为了实现高质量的equals()改写,effective java提醒我们要注意一下几点:
1. 使用==操作符检查是否指向同一个对象,这是一个性能优化的手段。
2. 使用instanceof来检查是否为某个类,同样也是性能优化的手段。
3. 把实参转换到正确的类型,上面一步保证了这一步不会有错误。
4. 检查类里的每一个关键域是否都相等。
还有要注意的就是,改写equals()方法的同时,都要改写hashcode方法。(下一篇里会提到为什么要这样)
Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
标签: