对于所有对象都用通用的方法

2016-10-10  本文已影响23人  求闲居士

本章讲述何时以及如何覆盖这些非final的Object方法

8,覆盖equal时请遵守通用的约定
实现诀窍:
告诫:
9,覆盖equal总要覆盖hashCode

相等的对象必须具有相等的散列码。如果不覆盖hashCode,会使该类无法结合所有基于散列的集合一起工作,如HashMap。

10.始终要覆盖toString

被返回的字符串应该是一个简洁的,但信息丰富,并且易于阅读的表达方式。
提供好的toString实现可以使类用起来更加舒适。

如果指定返回格式,要注意扩展类后对toString的影响

11,谨慎的覆盖clone

如果用一个公共方法覆盖了非final类中的clone方法,则应该返回一个通过super.clone而得到的对象。

实际上,clone方法就是另一个构造器;你必须确保它不会伤害到原始的对象,并正确的创建被克隆对象中的约束条件。但final对象会有问题。

注意

可以肯定的说,其他接口都不应该扩展这个接口,为了继承而设计的类也不应该实现这个接口

12,考虑实现Comparable接口

与本章的其他方法不同,compareTo方法并没有在Object中声明。一旦实现了Comparable接口,它就可以跟许多泛型算法以及依赖于改接口的集合实现进行协作。

compareTo方法的通用约定与equals方法的相似。compareTo是比较,当equals返回相等时,一般compareTo也要相等。

上一篇下一篇

猜你喜欢

热点阅读