<i18n dev> RFR: 8366178: Implement JEP 526: Lazy Constants (Second Preview) [v12]
Maurizio Cimadamore
mcimadamore at openjdk.org
Fri Oct 17 09:51:21 UTC 2025
On Fri, 17 Oct 2025 09:25:01 GMT, Per Minborg <pminborg at openjdk.org> wrote:
>> Implement JEP 526: Lazy Constants (Second Preview)
>>
>> The lazy list/map implementations are broken out from `ImmutableCollections` to a separate class.
>>
>> The old benchmarks are not moved/renamed to allow comparison with previous releases.
>>
>> `java.util.Optional` is updated so that its field is annotated with `@Stable`. This is to allow `Optional` instances to be held in lazy constants and still provide constant folding.
>
> Per Minborg has updated the pull request incrementally with one additional commit since the last revision:
>
> Update javadocs
src/java.base/share/classes/java/lang/LazyConstant.java line 46:
> 44: * A lazy constant is created using the factory method
> 45: * {@linkplain LazyConstant#of(Supplier) LazyConstant.of({@code <computing function>})}.
> 46: * When created, the contents (and hence the lazy constant itself) is <em>not initialized</em>.
"When created, the lazy constant is not initialized, meaning it has no contents."
E.g. it's the lazy constant that is initialized/not initialized. The content "just is". (or "is not", if not initialized).
src/java.base/share/classes/java/lang/LazyConstant.java line 47:
> 45: * {@linkplain LazyConstant#of(Supplier) LazyConstant.of({@code <computing function>})}.
> 46: * When created, the contents (and hence the lazy constant itself) is <em>not initialized</em>.
> 47: * The contents (of type {@code T}) can then be <em>initialized</em>
Again, "a lazy constant can be initialized, and its content retrieved, by calling get"
src/java.base/share/classes/java/lang/LazyConstant.java line 50:
> 48: * (and retrieved) by calling {@linkplain #get()}. The first time {@linkplain #get()}
> 49: * is called, the underlying <em>computing function</em> (provided at construction) will
> 50: * be invoked and the result will be used to initialize the contents. Once initialized,
"and the result will be used to initialize the lazy constant. Once a lazy constant is initialized, its contents can never change..."
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27605#discussion_r2439058429
PR Review Comment: https://git.openjdk.org/jdk/pull/27605#discussion_r2439060624
PR Review Comment: https://git.openjdk.org/jdk/pull/27605#discussion_r2439064085
More information about the i18n-dev
mailing list