RFR 8050819: Please add java.util.Stream.ofNullable(T object)
forax at univ-mlv.fr
Tue Jan 27 23:09:33 UTC 2015
On 01/27/2015 11:49 PM, Stuart Marks wrote:
> On 1/26/15 2:15 PM, Remi Forax wrote:
>> On 01/26/2015 07:42 PM, Alan Bateman wrote:
>>> On 26/01/2015 18:32, Paul Sandoz wrote:
>>>> On Jan 20, 2015, at 7:05 PM, Paul Sandoz <Paul.Sandoz at oracle.com>
>>>>> Stream.ofNullable can make it easier to work fluently when streams
>>>>> produced, for example within flatMap.
>>>> So far there have been "null" reviews :-)
> I think I saw an empty review fly by. :-)
> One quick note on the tests: the test data factory is
> TestData.Factory.ofSupplier("[0, 1)", ...)
> which would seem to me to contain a single value zero, but they all
> use one as the value. Not that it really matters, but I was puzzling
> over it.
>>> This looks okay to me, and the naming consistent with Optional.
>> I'm not sure this method pull it's own weight,
>> it can be written like this:
> It's certainly possible, but it seems like an unnecessary level of
> indirection. The need for something like this has come up multiple
> times, and it seems logical for it to be next to Stream.of() and
>> I'm pretty sure that the JIT will remove the creation of the
>> intermediary Optional
>> and adding a method in the JDK that considers that null is an
>> acceptable value
>> is in my opinion the wrong signal to send.
> I guess having a method like this makes it easier for people to deal
> with their possibly-null-producing code in a new streams world. Such
> null-producing code already exists. I guess you could say that
> providing this method encourages people to continue producing nulls,
> but everybody is already doing this today, so....
I prefer to be optimistic and think that at some point in the future,
people will think twice before returning null or storing null in a
Anyway, if you have a code that already produce a null value, you can
wrap it using Optional
as I've suggested or just let the value be streamed and filter it out,
that's why we have Objects.nonNull() after all.
More information about the core-libs-dev