RFR: 8368172: Make java.time.format.DateTimePrintContext immutable [v3]

Roger Riggs rriggs at openjdk.org
Wed Sep 24 17:06:55 UTC 2025


On Sat, 20 Sep 2025 14:39:20 GMT, Shaojin Wen <swen at openjdk.org> wrote:

>> I propose to make j.t.f.DateTimePrintContext immutable.
>> 
>> Currently, DateTimePrintContext has only one mutable field, optional. This can be replaced by adding an optional parameter to the DateTimeFormatter.formatTo method.
>> 
>> Immutable DateTimePrintContext can be optimized by escape analysis, such as immutable object optimization.
>
> Shaojin Wen has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Improve code style in DateTimeFormatterBuilder.format method
>   
>   Co-authored-by: Qwen-Coder <qwen-coder at alibabacloud.com>

This change proposes to make every PrinterParser necessarily handle the optionality that is supported by a few printer parsers. For some, like literals, it makes no sense at all. It adds complexity to the PrinterParser interface.
The optionality for nesting of printer parsers is currently handled by counting the depth in the DateTimePrintContext.
Is there another way that the optionality in a DateTimeContext can be passed on nesting without adding an argument everywhere?  Supposing the optional field in DateTimePrintContext could be `final boolean` and when optionality is needed, a copy be made with `optional = true` and passed to the nested printer. This technique is already used for `appendOptional`.

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

PR Comment: https://git.openjdk.org/jdk/pull/26913#issuecomment-3329887310


More information about the core-libs-dev mailing list