Draft Object Serialization Specification for records - construction/destruction
peter.levart at gmail.com
Sun Oct 6 21:38:42 UTC 2019
On Tuesday, October 1, 2019 12:56:55 PM CEST Chris Hegarty wrote:
> Please find a link to the draft serialization spec for records:
> This spec will be updated to reflect the upcoming core reflection
> changes for RecordComponent.
> Comments welcome.
Here's a snipped from above draft:
"""The serialized form of a record object is a sequence of values derived from
the final instance fields of the object. The stream format of a record object
is the same as that of an ordinary object in the stream. During
deserialization, if the local class equivalent of the specified stream class
descriptor is a record class, then first the stream fields are read and
reconstructed to serve as the record's component values; and second, a record
object is created by invoking the record's canonical constructor with the
component values as arguments (or the default value for component's type if a
component value is absent from the stream).
I think that if stream values deserialize into a record through its public API
(the canonical constructor which can be customized), then record components
that are serailzed must also be obtained from a record via its public API (the
accessors which can also be customized).
I think this is an important aspect which should be spelled out in the
specification. So instead of: "The serialized form of a record object is a
sequence of values derived from the final instance fields of the object.", the
text should go: "The serialized form of a record object is a sequence of
values derived from invoking the record component accessors."
What do you think?
More information about the amber-spec-experts