Effective Java-对于所有对象都通用的方法

覆盖equals时请遵守通用约定

  • 自反性。对象必须等于自身。

  • 对称性。任何两个对象对于“它们是否相等”的问题都必须保持一致。

  • 传递性。如果一个对象等于第二个对象,并且第二个对象等于第三个对象,则第一个对象一定等于第三个对象

  • 一致性。如果两个对象相等,它们就必须始终保持相等,除非它们中有一个对象(或者两个都)被修改了。

  • 非空性。所有的对象都必须不等于null

覆盖equals时总要覆盖hashCode

  • 对一个对象调用多次,hashCode返回同一个整数;

  • equals相等的两个对象,hashCode返回同一个整数;

  • equals不相等的两个对象,hashCode返回不同的整数;

始终要覆盖toString

  • 提供好的toString实现可以使类用起来更加舒适。

谨慎地覆盖clone

考虑实现Comparable接口

  • 如果正在编写一个值类,它具有非常明显的内在排序关系,比如按字母排序、按数值排序或者按年代顺序,那么就应该考虑实现这个接口。

你可能感兴趣的:(Effective Java-对于所有对象都通用的方法)