Java equals()和hashCode()的变化

4

equals()hashCode()方法的结果在对象的生命周期内发生变化会导致哪些问题?

谢谢!


你可能最终会遇到一些内存泄漏问题。 - rodrigoalvesvieira
只要这两个方法之间的契约没有被破坏,就应该没问题。当您修改对象的状态时,预期结果会发生变化。 - RP-
我不同意这是链接问题的重复。这是指更改现有的equalshashCode方法的实现,而不是在创建新类型时覆盖超类方法。 - Bobulous
1个回答

7

一个问题是,如果在将该对象添加到HashSet或HashMap(当该对象是Map中的键时)后,其hashCode更改,则无法在集合中找到该对象。

在对象生命周期内更改equals的结果可能会导致某些集合出现问题。例如,您可能会发现在Set中存在重复对象,因为在第二个对象被添加到Set时,它们不相等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接