Streaming Optional

The amazing Optional class in Java can sometimes be a bit frustrating; what if you have a bunch of them and want a nice and tidy Stream to do some work? If the “bunch” is a List or similar, then no problem. But what if not?

Callable and Supplier
– never shall the two meet!?

Let’s say we have this clever little legacy API method:

Now, we discover Java 8’s neat Supplier functional interface. As a courtesy to our users, we decide we would like to accept those as well. Does this work? A naïve addition gives us:

So far so good? Well, what happens if we try […]