【发布时间】:2015-03-23 10:52:54
【问题描述】:
请查看 Joshua Bloch 的 Effective Java 的 link。
在第二段中,作者说:
该类是私有的或包私有的,并且您确定它的 equals 方法永远不会被调用。 可以说,
equals方法应该被覆盖在这些情况下,万一它被意外调用:@Override public boolean equals(Object o) { throw new AssertionError(); // Method is never called }
请解释一下。我对作者使用术语私有类感到困惑,当我们确定不会调用 equals 方法时,为什么需要覆盖它。
【问题讨论】:
-
无法访问该页面。报告重要部分。
-
先生,这里是这篇文章的另一个链接jtechies.blogspot.in/2012/07/…\
-
你:"当我们确定它不会被调用时"; Joshua Bloch:“以防它被意外调用”。您还有其他问题吗?
-
先生,我不得不问,当这个类是包私有时,这意味着它只能在它的包中访问,而不能在外部访问。而且,由于我们自己编写了包,因此我们永远不会在代码中调用该方法。在包之外,它永远不会被调用。那么为什么我们需要重写方法来抛出断言错误
-
@user961690 你不应该那么相信自己。每个人都会犯错,即使你自己编写了那个类,你仍然可以调用
equals,因为你只是忘记了,你不应该那样做。尤其是如果你在这门课上的最后一次作业是几个月前。
标签: java equals effective-java