适时覆盖equals,覆盖equals是要覆盖hasdCode

符合以下情况是不需要覆盖equals的:

  1. 类的对象本质都是唯一的,不需要逻辑上的判断是否相等。
  2. 超类的equals判断试用子类,子类无需写自己的equals
  3. 其他不需要的情况

需要覆盖equals的类只有一种情况,我们关心的是对象里面的值,这个类有自己本身的‘值’相等逻辑,此时我们需要去覆盖equals,而且应遵守下列原则:

  • 自反
  • 对称
  • 传递
  • 一致
  • 非NULL 对象和NULL作比较时,返回NULL

为了避免在覆盖让equals之后使用Java本身的容器类发生错误,我们必须在覆盖equals的同时,覆盖hashCode。否则去比对对象的散列值时,就会发生预期之外的错误。

猜你喜欢

转载自www.cnblogs.com/zhaihua/p/9843512.html