brian.goetz at oracle.com
Fri Sep 21 09:30:54 PDT 2012
> If there is this operation:
> Optional<T> findFirst()
> then there should also be a version that takes a Predicate:
> Optional<T> findFirst(Predicate)
We started there and beat a rapid U-turn.
If you have findFirst(Predicate), you end up reinventing the whole
stream protocol either with overloads of find or with other methods on
Optional or both, because what if you want to filter and then map? Do
you do firstFirst(Predicate, Mapper)? There already is
filter(Predicate), so having a findFirst(Predicate) is unnecessary.
If we have filter(Predicate) all the same arguments apply anyway.
> But the question really boils down to whether Optional can contain null,
> and I don't think it should.
I agree, so this is where the strong force meets the heavy object. Do
we try to keep the nulls away, or do we treat this as an illegal stream
and blow when it gets to findFirst, or do we ignore nulls and treat them
as "not there"?
More information about the lambda-libs-spec-observers