等于Joshua Bloch的Effective Java中的方法

时间:2015-03-23 10:52:55

标签: java equals effective-java

请查看Joshua Bloch的Effective Java link

在第二段中,作者说:

  

该类是私有的或包私有的,并且您确定永远不会调用其equals方法。可以说,equals方法在这些情况下被覆盖,以防它被意外调用:

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

请解释一下。我对作者使用术语私有类感到困惑,当我们确定知道它不会被调用时,为什么需要覆盖equals方法。

1 个答案:

答案 0 :(得分:8)

只有当一个类是内部类时,它才可以是私有的。

至于“为什么”需要覆盖equals,原因是通过按照您所示的方式编写它,您将确保该方法永远不会被故意调用。在未来六个月的时候,当项目中的新开发人员在该类上调用equals时,方法抛出并发出信号表示调用它是不正确的。这是好事;它可以防止“遗忘”它。