Page 1 of 1

About Question enthuware.ocpjp.v7.2.1451 :

Posted: Mon May 05, 2014 8:38 am
by Elmcrest
Hi!

I'm a bit confused by the word "must" which is used in the possible answers. The javadoc of equals doesn't use "must", but instead "should":
It is reflexive: for any non-null reference value x, x.equals(x) should return true.
It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
For any non-null reference value x, x.equals(null) should return false.
Especially regarding the correct answer "If passed a null, it must return false.". Of course it doesn't really make sense to implement equals differently, but it's a free world, nobody is forcing me to do it like that. ;) I thought that it's only "highly encouraged" to return false in this case, or am I mistaken?

Kind regards

Re: About Question enthuware.ocpjp.v7.2.1451 :

Posted: Mon May 05, 2014 9:32 am
by admin
You are right. Although practically, it is pretty much a "must" but legally it should be a "should". This has now been fixed.
thank you for your feedback!
Paul.