Path: csiph.com!usenet.pasdenom.info!aioe.org!eternal-september.org!feeder.eternal-september.org!mx04.eternal-september.org!.POSTED!not-for-mail From: Jim Janney Newsgroups: comp.lang.java.programmer Subject: Re: hashCode Date: Fri, 31 Aug 2012 16:41:24 -0600 Organization: dotting one eye and crossing the other Lines: 77 Message-ID: References: <563f186a-edb3-4311-ae48-3af7decfce2c@googlegroups.com> <50317b03$0$281$14726298@news.sunsite.dk> <503bfd0f$0$282$14726298@news.sunsite.dk> <3zc%r.5945$pd4.2658@newsfe21.iad> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: mx04.eternal-september.org; posting-host="75975abe3fe3503ca7350803ab98e478"; logging-data="21048"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX187TJjJ7W/AcEjewMaTy8WS" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) Cancel-Lock: sha1:bBIjoM+ajv6wetqMzceElGkheLo= sha1:D//+62cj8cOHYTdNtO8JU1MP2WU= Xref: csiph.com comp.lang.java.programmer:18490 Lew writes: > On Friday, August 31, 2012 8:56:50 AM UTC-7, Jim Janney wrote: >> Eric Sosman writes: >> >> >> >> > On 8/31/2012 11:08 AM, Jim Janney wrote: >> >> >> Daniele Futtorovic writes: >> >> >> >> >> >>> On 31/08/2012 03:43, Eric Sosman allegedly wrote: >> >> >>>> On 8/30/2012 6:52 PM, Daniele Futtorovic wrote: >> >> >>>> [...] >> >> >>>> As an example of why a hasher might want access to a strictly-private >> >> >>>> field, I offered String: [...] >> >> >>> >> >> >>> Imposing that classes should expose all information "relevant" (says >> >> >>> who??) to hashing is utter rubbish IMNSHO. >> >> >> >> >> >> Objects that compare equal must hash to the same value. It follows that >> >> >> if the hash function uses a value, so must the comparison method. >> >> > >> >> > Since java.lang.String had already been mentioned, it's sort >> >> > of too bad you didn't look at it before posting. Had you done so, >> >> > you'd have found that [1] hashCode() uses the private field `hash' >> >> > and [2] equals() does not. >> >> >> >> If you want to play gotcha, it's sort of too bad you don't read this >> >> newsgroup more often. I pointed out the use of the private field some >> >> time ago, when we were discussing immutable classes. >> >> >> >> If you'd rather argue on the actual issues, a cached result is not extra >> >> information. The hashCode method in String doesn't return anything that >> can't be computed from publically available information. > > But it does impose a need for the hash function to access a private method > so that it can return that value faster. Denying access to the private member > would kill that optimization, one that any type of immutable object might want > to use. > > That is the motivation for requiring access to private members. > > Your anger is misplaced, as your recent post rejects that scenario, implying > that the only reason to use private members in 'hashCode'-alikes is for > calculation of the value. Once again: once again, there is no reason why String can't define a hashCode method for instances of Hasher to call. No need to forego anything. -- Jim Janney