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.

Reply via email to