Метод Optional.or
был добавлен в Java 9. Это подпись метода
public Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)
Почему берется параметр типа Supplier
? extends Optional
? extends Optional
а не просто Optional
, так как Optional
является окончательным классом?
То же самое верно для метода Optional.flatMap
. Это изменение от Java 8.
В Java 8 это была Function<? super T, Optional<U>> mapper
Function<? super T, Optional<U>> mapper
тогда как он был изменен на Function<? super T,? extends Optional<? extends U>>
Function<? super T,? extends Optional<? extends U>>
Function<? super T,? extends Optional<? extends U>>
в Java 9.