当我们可以直接使用Object Class中的方法时,为什么Collection接口有equals()和hashCode()

时间:2017-11-22 14:05:20

标签: java collections equals hashcode

当我们可以直接使用Collection类中的方法时,为什么equals()界面有hashCode()Object ...为什么又一次?

1 个答案:

答案 0 :(得分:1)

你正在考虑编译的条款。 Java SE是一个面向对象的库;方法被定义为契约的一部分,不仅仅是声明可用于其他代码编译的方法。

Collection.equals使用其他规定来完善Object.equals的合同:

  

Object.equals方法的一般合同规定,equals必须是对称的(换句话说,a.equals(b)当且仅当b.equals(a)时)。 List.equalsSet.equals的合同表明列表仅等于其他列表,并设置为其他集合。因此,当将此集合与任何列表或集合进行比较时,不实现equalsList接口的集合类的自定义Set方法必须返回false