如果我重载equals应该仍然覆盖java中的haschode?

时间:2016-06-11 17:55:08

标签: java override overloading equals hashcode

我知道我每次覆盖equals时都应该覆盖hasCode但是重载怎么办?我还应该覆盖hashCode吗?

附注:在发布问题之前,我已经读过,我应该首先避免重载等于但我仍然想知道如果我选择超载它应该怎么做。

1 个答案:

答案 0 :(得分:2)

没有基于散列的集合将使用重载的equals()方法。这是你的方法,你决定它应该做什么。因此合同完全属于你。

但我会重复你在问题中所说的内容:你不应该首先超载equals()。如果这样做,您至少应该使其与实际的equals(Object)方法保持一致,以避免大多数混淆。因为它应该与equals()一致,这意味着你需要覆盖equals(Object),因此也覆盖hashCode()。