简体   繁体   中英

equals() method of Object class

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM