【发布时间】:2012-05-11 05:53:25
【问题描述】:
我有一个 Object 并且我只想重写 equals 方法来比较两个对象,我没有在我的程序中的任何地方使用任何散列集合。在这种情况下,为什么在 hashCode 和 equals 方法中有一个合同,即如果两个对象相等,那么它们应该具有相同的 hashcode。 如果您想将此对象作为某个使用散列的集合中的键然后覆盖它,那么通用哈希码合同是否应该针对具体情况?
【问题讨论】:
-
仅供参考:如果您使用的是 Eclipse 或 NetBeans 等现代 Java IDE,您可以让您的 IDE 为您生成
equals()和hashCode()方法,这几乎可以省去所有精力它。 IDE 在这方面做得很好。 -
已经检查过这个链接,但它不能回答我的问题,如果我不使用任何散列集合并且没有其他人会处理我的代码,为什么要根据合同覆盖散列码
-
eclipse 可以为我做这件事我很清楚,但我想知道这份合同的具体原因。