Jan Burse wrote:
Maybe it would make sense to spell out what the contract
for hashCode() is. Well the contract is simply, the
following invariant should hold:
/* invariant that should hold */
if a.equals(b) then a.hashCode()==b.hashCode()
True, but if you read the specification for 'hashCode()' fully, that is
not the entire contract, only the compiler-enforceable part of it.
The entire specification requires that as much as feasible, the 'Object'
implementation distinguish distinct instances, and that the method
generally support 'HashMap', which promises O(1) 'get()' and 'put()'
with a "proper" (i.e., compliant) 'hashCode()'.
Two wrong statements.