1

当覆盖一个类的equals()andhashCode()方法时,下面的方法会起作用吗?

我查看对象是否相等的所有逻辑都在我的equals()方法中完成。hashCodeReturn该类有一个设置为 1的静态变量(我们称之为)。

当 equals 方法到达返回 false 的逻辑时,它会将 1 添加到hashCodeReturn

然后hashCode()简单地返回hashCodeReturn

有什么理由这行不通吗?

非常感谢。

4

2 回答 2

10

不,这行不通。

两个相同的对象(例如相同的引用)的哈希码应该相同。通过返回一个静态变量的结果,你将打破这个契约

hashCode 的一般合约是:

每当在 Java 应用程序执行期间对同一个对象多次调用它时,hashCode 方法必须始终返回相同的整数,前提是没有修改对象上的 equals 比较中使用的信息。

于 2013-01-11T09:24:00.130 回答
0

Hashcode()value在同一个引用上调用时必须返回相同的值,object但是当返回一个static值时,该值可能在先前调用时已更改并且可能会更改,因为这是类的变量,它可能会独立于它object而递减和递增,并且在下次调用时会发生更改的hashcode()

于 2013-01-11T09:39:25.723 回答