当重写类的equals()
和hashCode()
方法时,以下方法是否可行?在hashCode中使用静态变量()
我的equals()
方法完成我所有的逻辑来查看对象是否相等。这个类有一个静态变量(我们就叫它hashCodeReturn
)被设置为1。
当过equals方法达到逻辑将返回false,它增加了1至hashCodeReturn
的hashCode()
后来干脆回报hashCodeReturn
值
是否有任何理由不起作用?
非常感谢。
当重写类的equals()
和hashCode()
方法时,以下方法是否可行?在hashCode中使用静态变量()
我的equals()
方法完成我所有的逻辑来查看对象是否相等。这个类有一个静态变量(我们就叫它hashCodeReturn
)被设置为1。
当过equals方法达到逻辑将返回false,它增加了1至hashCodeReturn
的hashCode()
后来干脆回报hashCodeReturn
值
是否有任何理由不起作用?
非常感谢。
不,它不会工作。
两个相同对象(例如相同的引用)的哈希码应该是相同的。通过返回一个静态变量的结果,你将打破这个contract。
hashCode的一般合同是:
每当它是一种 执行的Java应用程序的期间在同一对象上调用一次以上,hashCode方法必须始终 返回相同的整数,没有提供在等于 中使用的信息在对象上的比较被修改。
Hashcode()
必须返回时,对在同一object
参考称为同value
但返回static
值,这可能有无改变时以前称为可能改变,因为这是它可能会递减,递增独立类的变量时其object
,这将改变下一个电话hashcode()
。
hashCodeReturn的目的是什么? – Swapnil
请提供一些示例代码,以便我们可以看到你的意思... –
我会把代码放在帖子的底部(好吧,我会在8小时内,当stackoverflow让我!) – Mike