效率编程 之「对于所有对象都通用的方法」

时间:2021-09-23 16:03:50

温馨提示:本系列博文(含示例代码)已经同步到 GitHub,地址为「java-skills」,欢迎感兴趣的童鞋StarFork,纠错。

第 1 条:覆盖equals时请遵守通用约定

覆盖equals方法看似很简单,但是有许多覆盖方式会导致错误,并且后果非常严重。最容易避免这类问题的办法就是不覆盖equals方法,在这种情况下,类的每个实例都只与它自身相等。如果类满足了以下任何一个条件,就不需要我们覆盖equals方法:

  • 类的每个实例本质上都是唯一的;
  • 不关心类是否提供了“逻辑相等”的测试功能;
  • 超类已经覆盖了equals方法,从超类继承过来的行为对于子类也是合适的;
  • 类是私有的或是包级私有的,可以确定它的equals方法永远不会被调用。

———— ☆☆☆ —— 返回 -> 那些年,关于 Java 的那些事儿 <- 目录 —— ☆☆☆ ————