On Jul 16, C. Scott Ananian wrote:
> On Mon, 16 Jul 2001, Eric Blake wrote:
> 
> > Someone will need to check my work with serialization issues, as I am not
> > very familiar with the process.  Basically, my added hashCode() caching will
> > break if a deserialization restores the transient hashCode field to 0
> > instead of -1.  I chose -1 for the non-cached value instead of 0, since new
> > Double(0).hashCode() == 0, but left the cache field transient so it will
> > interoperate with serial streams from other sources.  Maybe it's not worth
> > caching the result of hashCode() after all.
> 
> Fields marked transient are *defined* to be reset to zero after
> deserialization.  Use 0 as your non-cached value; the only "harm" will be
> that hashCode will have the same performance as the non-caching version
> for Double(0) -- it's still better than not caching at all.

Another possibility is to add a readObject method, that just calls
defaultReadObject() and initializes the transient fields to correct
values.  See Classpath's implementation of java.util.Locale as an
example.

  Jochen

_______________________________________________
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath

Reply via email to