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<Integer> 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<Integer>. 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.ma...@oracle.com> > À: "core-libs-dev" <core-libs-dev@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