RFR(s): 8140281 add no-arg Optional.orElseThrow() as preferred alternative to get() (original) (raw)
Remi Forax forax at univ-mlv.fr
Fri Dec 8 09:45:35 UTC 2017
- Previous message: RFR(s): 8140281 add no-arg Optional.orElseThrow() as preferred alternative to get()
- Next message: RFR(s): 8140281 add no-arg Optional.orElseThrow() as preferred alternative to get()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Let's gently derail this thread, the is another pain point with the current optional API, it seems that are no simple way to transform an Optional to an OptionalInt and vice-versa.
It's painful because we start to see interface that returns by example OptionalInt while the implementation you want to connect with return an Optional.
The only workaround seems to be to use a Stream/IntStream: Optional -> OptionalInt optional.stream().mapToInt(x -> x).findFirst() OptionalInt -> Optional optionalInt.stream().boxed().findFirst();
I think, Optional should have the method mapTo*/flatMapTo* and Optional[Primitive] the method boxed().
regards, Rémi
----- Mail original -----
De: "Stuart Marks" <stuart.marks at oracle.com> À: "core-libs-dev" <core-libs-dev at openjdk.java.net> Envoyé: Vendredi 8 Décembre 2017 01:33:41 Objet: RFR(s): 8140281 add no-arg Optional.orElseThrow() as preferred alternative to get()
Hi all,
Please review this changeset that introduces a new no-arg method orElseThrow() to Optional, as a preferred alternative to the get() method. Corresponding methods are also added to OptionalDouble, Int, and Long. The orElseThrow() method is functionally identical to get(). It has some affinity with the existing orElseThrow(exceptionSupplier) method, being equivalent to orElseThrow(NoSuchElementException::new). The get() method is functionally unchanged. It is NOT being deprecated, although some wording in the doc has been added to point to orElseThrow() as the "preferred alternative." This is part of a (slow) migration away from Optional.get(), which has an obvious, attractive name that is often misused. These issues have been discussed on this list previously: http://mail.openjdk.java.net/pipermail/core-libs-dev/2016-April/040484.html Please note that much of that discussion was about the then-proposed deprecation of Optional.get(), which is NOT part of this proposal. There are no plans to deprecate Optional.get() at this time. This proposal ONLY introduces a new method orElseThrow() that is identical in function to get(). Bug report: https://bugs.openjdk.java.net/browse/JDK-8140281 Webrev: http://cr.openjdk.java.net/~smarks/reviews/8140281/webrev.1/ Thanks, s'marks
- Previous message: RFR(s): 8140281 add no-arg Optional.orElseThrow() as preferred alternative to get()
- Next message: RFR(s): 8140281 add no-arg Optional.orElseThrow() as preferred alternative to get()
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]