Record Serialization - Update
Chris Hegarty
chris.hegarty at oracle.com
Fri Aug 23 15:57:52 UTC 2019
> On 23 Aug 2019, at 16:43, Brian Goetz <brian.goetz at oracle.com> wrote:
>
>
>>> What about serialVersionUID?
>> The serialVersionUID is allowed and taken into consideration ( sorry, I accidentally omitted this important point ). Setting the serialVersionUID is required, to be able to migrate from a record-like class to a record. Since the former and latter will likely have different default serialVersionUID’s, if not explicitly set ( which one is encouraged to do ).
>
> So, what we'll need here is guidance for:
Yes, good point. Guidance will be needed.
> - compiler writers, what to generate if no svuid is explicitly specified;
Currently not setting an explicit suid is a lint warning, e.g. :
$ cat Foo.java
import java.io.*;
public class Foo {
record A () implements Serializable { }
static class B implements Serializable { }
}
$ javac -Xlint:serial Foo.java
Foo.java:4: warning: [serial] serializable class A has no definition of serialVersionUID
record A () implements Serializable { }
^
Foo.java:6: warning: [serial] serializable class B has no definition of serialVersionUID
static class B implements Serializable { }
^
2 warnings
, which seems reasonable, and consistent between classes and records.
> - migrators, what to do when migrating from a class to a record.
The guidance is: explicitly set a suid. Which should be familiar to anyone preserving serial compatibility when modifying a serializable class in the current version of their library and requiring interoperability with a previous version.
I think I’m starting to see why you raised the question about whether or not checking the suid is really necessary! I guess it protects against accidental changes that could impact on previous serial forms. That said, an argument could be made that that check could be handled to the canonical constructor.
-Chris.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/amber-spec-experts/attachments/20190823/730f9a0c/attachment-0001.html>
More information about the amber-spec-experts
mailing list