当覆盖一个类的equals()
andhashCode()
方法时,下面的方法会起作用吗?
我查看对象是否相等的所有逻辑都在我的equals()
方法中完成。hashCodeReturn
该类有一个设置为 1的静态变量(我们称之为)。
当 equals 方法到达返回 false 的逻辑时,它会将 1 添加到hashCodeReturn
然后hashCode()
简单地返回hashCodeReturn
值
有什么理由这行不通吗?
非常感谢。
不,这行不通。
两个相同的对象(例如相同的引用)的哈希码应该相同。通过返回一个静态变量的结果,你将打破这个契约。
hashCode 的一般合约是:
每当在 Java 应用程序执行期间对同一个对象多次调用它时,hashCode 方法必须始终返回相同的整数,前提是没有修改对象上的 equals 比较中使用的信息。
Hashcode()
value
在同一个引用上调用时必须返回相同的值,object
但是当返回一个static
值时,该值可能在先前调用时已更改并且可能会更改,因为这是类的变量,它可能会独立于它object
而递减和递增,并且在下次调用时会发生更改的hashcode()
。