문제

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)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top