Draft Object Serialization Specification for records - serialVersionUID

Peter Levart peter.levart at gmail.com
Sun Oct 6 21:23:20 UTC 2019


Hi Chris,

On Tuesday, October 1, 2019 12:56:55 PM CEST Chris Hegarty wrote:
> Please find a link to the draft serialization spec for records:
> 
> https://cr.openjdk.java.net/~chegar/records/spec/records-serialization.03.ht
> ml
> 
> This spec will be updated to reflect the upcoming core reflection
> changes for RecordComponent.
> 
> Comments welcome.
> 
> -Chris.

Above draft says:

"""Any serialPersistentFields or serialVersionUID field declarations are also 
ignored -- all record classes have a fixed serialVersionUID of 0L.
"""

So how does this work with migration plan? When a record-like class C with 
serialVersionUID != 0 is migrated to be a record, the stream produced with 
class C can not be read by a program where C is a record. Or is the value of 
serialVersionUID in the stream ignored when reading the stream into a record? 
In that case writing class C -> reading record C is supported, but what about 
writing record C -> reading class C ?

If you still want to support migration, then perhaps the default 
serialVersionUID of records could be 0L always, but serialVersionUID field 
would still be considered when this default needs to be overridden. So for 
types that are records from day 1, users don't have to bother with 
serialVersionUID fields, but if a type is migrated from class to record, this 
can still be supported.

What do you think?

Regards, Peter




More information about the amber-spec-experts mailing list