I was reading JLS, The Class Object
and according to it
The method equals defines a notion of object equality, which is based on value,
not reference, comparison.
but when I opened the Declaration of equals
method of Object
class, which is:
public boolean equals (Object o) {
return this == o;
}
But here, reference is checked with Reference equality operator(==)
, how this Declaration is matching the specification?
See the javadoc for Object
's .equals()
:
The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference values x and y, this method returns true if and only if x and y refer to the same object (x == y has the value true).
Which means, if you don't override it in your class, this is what you get.
The JLS is still right about what it says; however it is up to implementations to define their own .equals()
contract.
(and of course, if you override .equals()
, you should override .hashCode()
as well)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.