【发布时间】:2023-03-29 23:04:02
【问题描述】:
是否有最佳实践,何时覆盖 equals?
我是否应该覆盖 equals/hashCode 并抛出 AssertionError?只是为了确保没有人使用它? (正如《Effective Java》一书中推荐的)
我是否应该重写 equals/hashCode 并只调用 super.equals/hashCode,因为超类的行为是相同的? (FindBugs 推荐这个,因为我加了一个字段)
它们真的是最佳实践吗?
【问题讨论】:
-
Effective Java 建议在非常有限的情况下抛出 AssertionError:“该类是私有的或包私有的,并且您确定它的 equals 方法永远不会被调用。”只为了调用超类方法而重写方法与不重写方法是一样的。
标签: java