2015-11-01 1:12 GMT+01:00 Michael Nascimento <mist...@gmail.com>: > Hi Vitaly, > > Exactly, I was just trying to point out the method signature seems broken > anyway. > > Regards, > Michael
Hi Michael, I don't think the signature is broken. An Optional<StringBuilder> is not a subtype of Optional<CharSequence>. So even if the signature were public <R extends T> Optional<T> or(Supplier<Optional<R>> supplier) we'd have to upcast the result of supplier.get() to Optional<T> which appears to be wrong from a type perspective. Regards, Stefan > > On 31 Oct 2015 11:59, "Vitaly Davidovich" <vita...@gmail.com> wrote: >> >> This would require Supplier<Optional<? extends T>>, not Supplier<? extends >> Optional<T>>. >> >> sent from my phone >> >> On Oct 31, 2015 2:49 PM, "Michael Nascimento" <mist...@gmail.com> wrote: >>> >>> If this instance is an Optional<CharSequence> , passing an >>> Optional<StringBuilder> will fail to compile. >>> >>> Regards, >>> Michael >>> On 31 Oct 2015 11:21, "Stefan Zobel" <splitera...@gmail.com> wrote: >>> >>> > 2015-10-31 19:11 GMT+01:00 Remi Forax <fo...@univ-mlv.fr>: >>> > >>> > > Hi all, hi Paul, >>> > > >>> > > I've just seen that Optional.or is declared as >>> > > public Optional<T> or(Supplier<Optional<T>> supplier) { >>> > > instead of >>> > > public Optional<T> or(Supplier<? extends Optional<T>> supplier) { >>> > > >>> > > regards, >>> > > Rémi >>> > > >>> > >>> > >>> > I don't get it. Optional is final anyway. Can you explain? >>> > >>> > Thanks, >>> > Stefan