RFR [9] 8071472: Add field access to support setting final fields in readObject

Chris Hegarty chris.hegarty at oracle.com
Fri Mar 20 17:13:31 UTC 2015


On 20 Mar 2015, at 13:03, David M. Lloyd <david.lloyd at redhat.com> wrote:
...
> An interesting aspect of this approach is that it deals with a problem in the serialization spec [1] where it specifically says that serializable classes should be reading/writing stream fields always, and before reading/writing other data:
> 
> In section 3.4: "Either ObjectInputStream's defaultReadObject or readFields method must be called once (and only once) before reading any optional data written by the corresponding writeObject method; even if no optional data is read, defaultReadObject or readFields must still be invoked once."
> 
> In section 2.3: "Either ObjectOutputStream's defaultWriteObject or writeFields method must be called once (and only once) before writing any optional data that will be needed by the corresponding readObject method to restore the state of the object; even if no optional data is written, defaultWriteObject or writeFields must still be invoked once."
> 
> But classes (even JDK classes) often disregard this requirement, relying on known implementation behavior and either reading/writing optional data before fields or just not reading/writing fields at all.  So either the spec should be updated (I've tried to do this but nobody seems to know how to modify this old content I guess) to match behavior, or the spec should be enforced more strictly - however doing the latter *will* break a lot of user code, *unless* an alternative readObject method is introduced with the more strict enforcement.  But I guess even in this case, the spec should be updated to allow the implementation behaviour.

I do remember the thread on this [1]. I did try to locate the source of the Serialization spec, but never got to the bottom of it.

I think we should start a new thread on this, and see if we can agree proposed wording for the spec. I will then endeavour to have these amendments applied to the spec. ( In the meantime I’ll see if I can make progress on locating the spec source ).

-Chris.

[1] http://markmail.org/message/tpyws22lklyodb7p


> [1] http://docs.oracle.com/javase/8/docs/platform/serialization/spec/serialTOC.html




More information about the core-libs-dev mailing list