Re: hashCode
To: bob smith
From: Lew <lewbloch@gmail.com>
bob smith wrote:
Eric Sosman wrote:
bob smith wrote:
Is it always technically correct to override the hashCode function like so:
It complies with the contract for 'hashCode()'. Is that all it takes to be
correct?
Would it be potentially better if that was Object's implementation?
Would what be better if what were Object's implementation of what?
Define "better."
Better in the sense that you would never HAVE to override hashCode.
Now, there are cases where you HAVE to override it, or your code is very
broken.
No.
No matter what 'Object''s 'hashCode()' implementation were, it would need to be
overridden when you want value equality instead of object identity for
'equals()'.
See Joshua Bloch's seminal work /Effective Java/, which has items that pertain
to this.
Bottom line: 'hashCode()', 'equals()', and when present, 'compareTo()' must be
consistent.
'toString()' should be consistent with those.
As long as 'hashCode()' fulfills the contract, your code will work -
functionally. But a bad
'hashCode()' could and likely will noticeably affect performance. There is more
to correctness
than mere functional conformance.
--
Lew
--- BBBS/Li6 v4.10 Dada-1
* Origin: Prism bbs (1:261/38)
--- Synchronet 3.16a-Win32 NewsLink 1.98
Time Warp of the Future BBS - telnet://time.synchro.net:24