RFR: 8371732: [redo] Change java.time month/day field types to 'byte' [v2]
Dan Smith
dlsmith at openjdk.org
Sat Nov 15 21:10:11 UTC 2025
On Fri, 14 Nov 2025 20:15:03 GMT, Roger Riggs <rriggs at openjdk.org> 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
More information about the core-libs-dev
mailing list