Loose ends: Optional

Remi Forax forax at univ-mlv.fr
Sun Jun 2 12:15:26 PDT 2013


On 06/02/2013 06:56 PM, Brian Goetz wrote:
>>>   I still struggle with the fact that with the current API I still have to make my own object to Optional converter to handle nulls in what I think is a sane way.
>> yes, Optional have not the same semantics as Optional (from Guava).
> Can you clarify this?  Is this anything more than the lack of an Optional.ofNullable(T) factory?

Yes.

But if you add that, you will have code like this:
   List<Optional<Badge>> bagdes = people.streams().map(p -> 
Optional.ofNullable(map.get(p.getName())).collect(toList());

That's why I was against Optional since the beginning, because if you 
introduce it,
the whole community will have to deal with beast like the one above.

Trading a null to an Optional doesn't solve the issue, filtering the 
null out the of stream is the solution:
   List<Badge> badges = people.streams().map(p -> 
map.get(p.getName()).filter(Objects::isNotNull).collect(toList());

Rémi



More information about the lambda-libs-spec-experts mailing list