On 6 January 2015 at 10:25, Chris Hegarty <chris.hega...@oracle.com> wrote:
> On 6 Jan 2015, at 08:31, Stephen Colebourne <scolebou...@joda.org> wrote:
>> I've thought on a number of occasions that what I wanted from
>> serializable was a merger of readObject and readResolve
>>
>> private Object readObjectAndResolve(ObjectInputStream in) throws IOException
>
> This is an interesting idea.
>
> Just so I understand, readObject is called down the inheritance hierarchy and 
> can read, into locals, its classes serializable fields ( of course if can 
> access its super types fields that are already set ), where as just a single 
> readResolve call is made, if it is defined by or accessible (via inheritance) 
> by the given class.

I tend to work with shallow/no hierarchies so I've not thought too
much about the detail. I'd imagine you'd want to have
readObjectAndResolve() be a static method called only on the class
being deserialized and not superclasses. The method itself would be
responsible for any superclass deserialization. (Static because there
is no instance to call it on and it should have no access to instance
variables). It may be that the input should not be ObjectInputStream,
but some simpler but related type.

Stephen

Reply via email to