RFR : JDK-8001642 : Add Optional<T>, OptionalDouble, OptionalInt, OptionalLong
Brian Goetz
brian.goetz at oracle.com
Sun Mar 10 16:22:02 PDT 2013
I've posted a survey for the EG at:
https://www.surveymonkey.com/s/NSXMYC2
where people can express their preference between:
- Leave things as they are (Optional-bearing methods for findXxx and
reduce);
- Add, as Doug suggests, non-optional versions of these too.
Implementation / spec complexity is a non-issue here -- the
implementations are trivial. The sole issue is whether the API is
better with one version or with both.
The password has been communicated directly to the EG; contact me if you
didn't get it.
Usual survey rules: enter your name with your response, all results will
be made public after the survey closes. I'll set a closing time of 6PM
PT Wednesday of this week.
On 3/6/2013 7:09 AM, Doug Lea wrote:
> (Restricting to lambda-libs list...)
>
> On 03/06/13 04:47, Remi Forax wrote:
>> Ok, let be nuclear on this,
>> There is no good reason to introduce Optional<T> in java.util.
>
> We agree about most of the rationale for not using Optional.
> But there are still people who say they want it.
> I don't think it is productive at this point to
> argue about features supporting an Optional-laden
> programming style. But we never seem to hit closure
> about features supporting an Optional-free style.
> So I'd like to re-propose a simple compromise.
> In the same way that there are Optional and
> basis-returning versions of reduce:
>
> T reduce(T identity, BinaryOperator<T> reducer);
> Optional<T> reduce(BinaryOperator<T> reducer);
>
> (Where the basis-returning one can in turn be used to
> avoid Optional-returning min(), etc). We should do the
> same at least for find, or more in keeping with current
> API, findFirst and findAny:
>
> T findFirst(Predicate<? super T> predicate, T ifNone);
> T findAny(Predicate<? super T> predicate, T ifNone);
>
> People wanting to avoid Optional can then then
> get all of the derived versions (allMatch, plain
> findAny, etc) easily enough.
>
> Surprisingly enough, that's the only missing
> feature that would otherwise enable a completely
> Optional-free usage style of the Stream API.
>
> We have both proposed variants of this several times,
> but they don't seem to go anywhere. It would be nice
> to have a calm final discussion about why we would NOT
> do such an apparently sensible thing!
>
> -Doug
>
More information about the lambda-libs-spec-experts
mailing list