RFE: Refactor java.util.Optional and add NonNull checks
Remi Forax
forax at univ-mlv.fr
Wed Aug 23 15:56:42 UTC 2023
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+openjdk at raccoons.co>
> To: "core-libs-dev" <core-libs-dev at 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/core-libs-dev/attachments/20230823/e9f01acd/attachment-0001.htm>
More information about the core-libs-dev
mailing list