本帖最后由 emos-c 于 2013-7-19 16:25 编辑
今天看API,看到Object类时发现了个小问题,API上说,当复写了equals方法后,有必要将hashCode方法也复写掉,因为根据个什么协议说的当对象判断为相等时其hashCode值也应相同;再去看hashCode方法的描述时也是这么说的,当两个对象不相等时,其hashCode值也不应该相同。
我自己试了下,只复写equals方法,不复写hashCode方法,当对象判断相同时返回的hashCode不相同,感觉没问题。为什么API要求也相同呢?
还有对于hashset集合来说,当hashCode值相同时进一步通过equals判断是否相同,那如果真的按API说得复写了,那hashset的健壮性不就出问题了吗?
|