Originally posted by Mike Cutter:
A. (x.equals(y) == false) implies (x.hashCode(y) != y.hashCode())
B. (x.hashCode(y) != y.hashCode()) implies (x.equals(y) == false)
C. (x.hashCode(y) == y.hashCode()) implies (x.equals(y) == y.equals(x))
D. (x.equals(y) == true) implies (x.hashCode() == y.hashCode())
The Object.hashCode method does not declare a parameter so the code examples here are problematic.