RFR 8080418 Add Optional.or()

Stephen Colebourne scolebourne at joda.org
Fri Sep 25 13:06:54 UTC 2015

On 25 September 2015 at 11:58, Paul Sandoz <paul.sandoz at oracle.com> wrote:
> Please review this change to add a method Optional.or that allows one to better compose optionals:
>   http://cr.openjdk.java.net/~psandoz/jdk9/JDK-8080418-optional-or/webrev/

New method seems fine.

> Separately while we are on the topic of Optional i would be interested in opinions on the following changes:
>   http://cr.openjdk.java.net/~psandoz/jdk9/optional-prims-filter-map/webrev/
> 1) add methods that were missing on the primitive specializations; and

Seems fine, although I think a good case can be made for mapToObj() -
while going via a stream is possible, it is non-intuitive. I don't
think mapToInt() or mapToLong() are necessary on OptionalDouble (and
so on), but not being able to reach Object will be restrictive..

> 2) add to all variants a mapOrElseGet (otherwise known as a “fold”), which is the equivalent of map(mapper).orElseGet(supplier). That is arguably less mind-bending to use when transforming from Optional<T> to Optional<U>.

To me, this is pointless, and makes the API more confusing. Chaining
methods is a way of life in Java 8, and developers have to be able to
think that way.


More information about the core-libs-dev mailing list