Optional require(s) NonNull

Boaz Nahum boaznahum at gmail.com
Mon Oct 29 09:33:46 PDT 2012


I can only blame my poor English.

Lets forget the 'philosophic' first  part of my question.

the  second part  asks: According to current implementation in b62,
'this.present' is false i.f.f   'this.value' is null --> 'this.present' ==
(this.value != null ). So why we need 'this.present' ?

If you allow me insist of the first part - Why won't allow me to create  a
*present* Optional with null value ?

On Mon, Oct 29, 2012 at 5:15 PM, Brian Goetz <brian.goetz at oracle.com> wrote:

> This constructor is for creating a *present* Optional.  You use
> Optional.empty() to create an *empty* optional.
>
> On Oct 29, 2012, at 11:02 AM, Boaz Nahum wrote:
>
> > I thought I understand Optional till I read the implementation:
> >
> > public Optional(T value) {
> >        this.value = Objects.requireNonNull(value);
> >        this.present = true;
> > }
> >
> > Why 'requireNonNull' non null ? If null is singular value why we need
> this
> > class ? just for 'orElse..' methods ?
> >
> > If if value can't be null why we need the 'present' field ?
> >
> > My hopes where that I can use Optional to return a null as a legal value.
> >
> > Thanks
> > Boaz
> >
>
>


More information about the lambda-dev mailing list