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"。
请看一下 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"。