On Fri, 14 Nov 2025 20:15:03 GMT, Roger Riggs <[email protected]> wrote:

>> Redo change (8371732) that failed when the updated class objects were 
>> incompatible.
>> The fields of classes are changed to allow a more compact form of storage.
>> 
>> To ensure compatibility of the class objects, the fields are explicitly 
>> declared in SerialPersistentFields with the original field types.
>> The fields are marked `transient` to indicate the field declarations are not 
>> used for serialization.
>> The affected classes are java.time.LocalDate, MonthDay, and YearMonth.
>> Tests are added to verify the types and names of serialized fields of each 
>> class.
>> 
>> HijrahDate only changes the field types, the fields are transient and there 
>> is no change to the serialized from of the HijrahDate.class object.
>
> Roger Riggs has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Use "Java SE 8" instead of version 1.8

Glad to see the fields back to being bytes.

FWIW, the `transient` is redundant: `serialPersistentFields` _explicitly_ 
declares the serializable fields (i.e., a set of name/type pairs); all that the 
`transient` does is aid in figuring out the _implicit_ serializable fields if 
there is no explicit declaration.

(Just to confirm, I tested that if I add `transient` to a field that is also 
listed in `serialPersistentFields`, serialization will read and write that 
field anyway.)

-------------

PR Comment: https://git.openjdk.org/jdk/pull/28274#issuecomment-3536891063

Reply via email to