On Tue, 21 Feb 2023 03:39:46 GMT, Tingjun Yuan <[email protected]> wrote:
>> Currently, the two subclasses of `java.util.EnumSet` optimize bulk
>> operations when the argument is also a `EnumSet`, but there is no such
>> optimization for wrapper sets (returned by `Collections.unmodifiableSet`,
>> `Collections.synchronizedSet`, etc.) and immutable sets (returned by
>> `Set.of` methods) of `Enum`s.
>>
>> This PR introduces optimization classes for these situations. No public
>> APIs are changed.
>
> Tingjun Yuan has updated the pull request incrementally with one additional
> commit since the last revision:
>
> Set.copyOf: need defensive copy
Also, in JEP 441, there is pattern matching support for different enums
implementing one interface in one switch, see the enum constants section there.
I wonder how useful this is, and how often do we have interfaces with more than
one enum implementations (e.g. StandardOptions/ExtendedOptions)
src/java.base/share/classes/java/util/ImmutableCollections.java line 1110:
> 1108: static final JavaLangAccess JLA =
> SharedSecrets.getJavaLangAccess();
> 1109:
> 1110: @Stable
Useless
src/java.base/share/classes/java/util/ImmutableCollections.java line 1174:
> 1172: static final class ImmutableRegularEnumSet<E extends Enum<E>>
> extends AbstractImmutableEnumSet<E>
> 1173: implements RegularEnumSetCompatible<E>, Serializable {
> 1174: @Stable
Useless
src/java.base/share/classes/java/util/ImmutableCollections.java line 1267:
> 1265: final long[] elements;
> 1266:
> 1267: @Stable
Useless
-------------
PR Review: https://git.openjdk.org/jdk/pull/12498#pullrequestreview-1351490416
PR Review Comment: https://git.openjdk.org/jdk/pull/12498#discussion_r1144062917
PR Review Comment: https://git.openjdk.org/jdk/pull/12498#discussion_r1144064197
PR Review Comment: https://git.openjdk.org/jdk/pull/12498#discussion_r1144062709