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.san...@oracle.com>
wrote:
Hi,
http://cr.openjdk.java.net/~psandoz/jdk9/JDK-8050819-Stream-ofNullable/webrev/
Stream.ofNullable can make it easier to work fluently when streams
are
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.
-Alan.
I'm not sure this method pull it's own weight,
it can be written like this:
Optional.ofNullable(t).stream()
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
Stream.empty().
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
collection.
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.
Stream.of(t).filter(Objects::nonNull)
s'marks
Rémi