我正在阅读JLS, The Class Object
并根据它
The method equals defines a notion of object equality, which is based on value,
not reference, comparison.
但是当我打开equals
类的Object
方法声明时,它是:
public boolean equals (Object o) {
return this == o;
}
但是在这里,使用Reference equality operator(==)
检查引用,该声明如何与规范匹配?
答案 0 :(得分:4)
请参阅javadoc for Object
's .equals()
:
类Object的equals方法在对象上实现最具辨别力的等价关系;也就是说,对于任何非空引用值x和y,当且仅当x和y引用同一对象时,此方法才返回true(x == y的值为true)。
这意味着,如果你没有在课堂上覆盖它,这就是你得到的。
JLS对于它所说的内容仍然是正确的;但是,由实现来定义自己的.equals()
合同。
(当然,如果您覆盖.equals()
,则应覆盖.hashCode()