当我们可以直接使用Collection
类中的方法时,为什么equals()
界面有hashCode()
和Object
...为什么又一次?
答案 0 :(得分:1)
你正在考虑编译的条款。 Java SE是一个面向对象的库;方法被定义为契约的一部分,不仅仅是声明可用于其他代码编译的方法。
Collection.equals使用其他规定来完善Object.equals的合同:
Object.equals
方法的一般合同规定,equals必须是对称的(换句话说,a.equals(b)
当且仅当b.equals(a)
时)。List.equals
和Set.equals
的合同表明列表仅等于其他列表,并设置为其他集合。因此,当将此集合与任何列表或集合进行比较时,不实现equals
和List
接口的集合类的自定义Set
方法必须返回false
。