Draft JLS spec for records
Gavin Bierman
gavin.bierman at oracle.com
Tue Aug 27 12:24:09 UTC 2019
Thanks Chris!
> On 26 Aug 2019, at 14:43, Chris Hegarty <chris.hegarty at oracle.com> wrote:
>
> Gavin,
>
> On 23/08/2019 22:25, Gavin Bierman wrote:
>> A draft language spec for records is available at:
>> http://cr.openjdk.java.net/~gbierman/8222777/8222777-20190823/specs/records-jls.html
>> ...
>
>
> "It is a compile-time error for a record header to declare a record
> component with the name clone, finalize, getClass, hashCode, notify,
> notifyAll, readObjectNoData, readResolve, serialPersistentFields,
> toString, wait, or writeReplace."
>
> TL;DR from a serialization POV, I think the above list is fine.
>
> --
>
> Specifically on the restricted component names coming from serialization.
>
> The complete list of java.io.Serializable magic members:
>
> private void writeObject(java.io.ObjectOutputStream out) throws ..
> private void readObject(java.io.ObjectInputStream in) throws ..
> private void readObjectNoData() throws ..
> ANY-ACCESS-MODIFIER Object writeReplace() throws ..
> ANY-ACCESS-MODIFIER Object readResolve() throws ..
>
> private static final ObjectStreamField[] serialPersistentFields
> ANY-ACCESS-MODIFIER static final long serialVersionUID
>
> Ok, so you have all three no-args methods, looks fine, no possible collision between component accessor and the magic method. We could however decided to just ban both readObject and writeObject, as they could be confusing to the reader. But if it is just a minimal list of no-args methods, then what you have is fine.
>
> The listing of serialPersistentFields seems fine too, again possible collision with the record component field.
>
> serialVersionUID is static, so doesn't need to need to be listed. Ok.
>
>
> --
>
> java.io.Externalizable is a lot less magic
>
> void readExternal(ObjectInput in)
> void writeExternal(ObjectOutput out)
>
> There are no no-args methods, good. If we decided to ban readObject and writeObject above, then we could consider banning these two component names also ( for the same reason we would ban the former ).
>
> --
>
> Typo: there are two occurrences of "an record".
>
> -Chris.
More information about the amber-spec-experts
mailing list