Effective java学习笔记7:改写equals的时候遵守约定

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

在Java里面object equals()的概念是两个引用指向的是同一个对象,即两者指向同一个对象,才equals()。但是也有特例,比如说一些原始类型,integer,string等属于值相等。就是说,值相等,也就equals()了。实际上,他们都改写了object的equals()方法。但是”类型安全”的值类不需要改写equals()。

还有,当我们当前的类有特定的”相等”的定义的时候,而且我们的超类并没有改写equals()方法,就需要改写equals()方法了。

改写的规范-object必须满足:

1. 自反

2. 对称

3. 传递

4. 一致

5. X非空,x.equals(null)返回false

为了实现高质量的equals()改写,effective java提醒我们要注重一下几点:

1. 使用==操作符检查是否指向同一个对象,这是一个性能优化的手段。

2. 使用instanceof来检查是否为某个类,同样也是性能优化的手段。

3. 把实参转换到正确的类型,上面一步保证了这一步不会有错误。

4. 检查类里的每一个要害域是否都相等。

还有要注重的就是,改写equals()方法的同时,都要改写hashcode方法。(下一篇里会提到为什么要这样)

【matrix 原创】-转载请注明来自:www.matrix.org.cn

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航