Android开发经验谈Android开发Android开发

EffectJava翻译系列(第二章:Object的方法)

2019-01-09  本文已影响1人  青楼爱小生

2.所有对象都有的方法(equals,hashCode...)

Item8 遵循equals的通用规则

除非有数学上的倾向要违背这些,否则必要遵循
当父类和子类都有自己的equals方法时,某些场景会违背这些原则,非要使用equals的话,建议将子类替换成组合的方式
当自己重写equals方法问自己三个问题:它是对称性的吗?是可传递的吗?是一致的吗?

Item9 重写equals时始终重写hashCode

重写equals而没有重写hashCode会导致用到hash值的类出现bug,如HashMap,HashSet..
下面是使用Object在JavaSE6中的规则:

生成hashCode时,属性中可计算的则直接参与计算,不可计算的字段调用它的hashCode()参与计算

Item10 始终重写toString方法

不重写的话会得到Object@163b91一串无意义的打印
最好是打印出自己需要的关键字段信息

Item11 明智的重写clone方法

使用的较少,理解不深,后续补充

Item12 实现 Comparable接口

对于需要排序和比较的对象,实现此接口定义自己的排序规则


上一篇 下一篇

猜你喜欢

热点阅读