On 16/09/2008, Simon Kitching <[EMAIL PROTECTED]> wrote: > sebb schrieb: > > > I think I've found a fix to LANG-459 - which is to borrow some code > > from Apache Axis. > > > > The required code is a single short class - IDKey (e.g. > > > http://www.jdocs.com/axis/1.4/org/apache/axis/utils/IDKey.html) > > > > It could be added as a private class of HashCodeBuilder, but it has > > wider use, so should probably be added as a public class. > > > > > Seems reasonable to me. It does look like it will solve LANG-459. And as > you say, this problem may be reasonably common. > > What about making the IDKey class final? One thing that does concern me is > that HashSet lookup using an Integer object as the key should be pretty > fast. Using an IDKey object as the key may not perform as well. Making IDKey > final would at least help. And I cannot see any reason why someone would > want to subclass IDKey. >
Good idea. I already made the fields final. > One other concern is regarding garbage collection. From a brief look at the > code, this thread-local registry object contains a set of Integer hashcodes. > With this change, the set will now contain real hard references to objects, > preventing them from being garbage-collected while they are in the set. Does > this matter? The entries are only retained in the registry during the hashcode calculation - if any were left behind they could mess up subsequent calls in the same thread. As far as I can see, the code always removes any items that are added, but it would be worth double-checking that. > > Seems to me it would also be useful to add IdentityHashMap and > > IdentityHashSet classes as well, given that LANG still targets Java > > 1.3. > > > > WDYT? > > > > And do these classes need a new package, or would the top-level package be > OK? > > > > > > No opinion. > > Cheers, > Simon > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]