Joshua Bloch 的 Effective Java 中的 Equals 方法

Equals method in Joshua Bloch's Effective Java

请看一下 Joshua Bloch 的 Effective Java 的 link

在第二段中,作者说:

The class is private or package-private, and you are certain that its equals method will never be invoked. Arguably, the equals method should be overridden under these circumstances, in case it is accidentally invoked:

@Override public boolean equals(Object o) {
     throw new AssertionError(); // Method is never called
}

请解释一下。我对作者对术语 private class 的使用感到困惑,这就是为什么当我们确定不会调用 equals 方法时需要重写它。

A class 仅当它是内部 class 时才可以是私有的。

至于 "why" 是否需要覆盖 equals,原因是按照您所展示的方式编写它,您将 确保永远不会有意调用该方法。六个月后的那一刻,当项目的新开发人员将在 class 上调用 equals 时,方法 抛出并表明调用它是不正确的.这是好事;它阻止了"forgetting"。