Sorry, you can not do that. Optional is a value based class [1] (see the javadoc) so the class has to be final.
And more generally, the API of a classes of OpenJDK will not change based on some stylistic issue, OOP or not. regards, Rémi Forax [1] https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/lang/doc-files/ValueBased.html > From: "Oleksii Kucheruk" <iselo+open...@raccoons.co> > To: "core-libs-dev" <core-libs-dev@openjdk.org> > Sent: Wednesday, August 23, 2023 4:43:17 PM > Subject: RFE: Refactor java.util.Optional and add NonNull checks > Hi there. > I have found that `java.util.Optional` is written procedural style and has > `ifnonnull` checks in each method. I propose to refactor `Optional` in > accordance to OOP-style. This will eliminates all unnecessary `if`-statements, > removes duplications and reduces bytecode size more then twice. > I have two solutions: > 1. Completely dynamic that avoids single static `EMPTY` instance and unchecked > casting of each `Optional.empty()` > 2. Preserving original single static `EMPTY` per VM. > Also there are couple methods that throws NPE due to calling methods on > null-objects and requires to add `Objects.requireNonNull(...)`. > OptionalInt, OptionalDouble, OptionalLong could be refactored same way even > with > remove of additional boolean variable `isPresent`. > Since I'm new here any guidance will be helpful. > Thank you in advance.