I like ever since I encountered it both in and in . When I switched to the , it happened when Java still had to gain . Applying an event-driven paradigm with that version of Java felt out of place and unelegant. But ever since I find myself slowly returning to event-driven choices.

For instance, after a HttpResponse is returned from a web server, I check the status code: if failure, then run failure method, else run success method. I can do that with an if statement. Using an if statement means that I have to query the status code. I can also do it with a Consumer and Runnable: onSuccess(action, otherwise). The status code still gets checked, but now that gets done in the appropriate place: the response checks it, or the code checks itself.

We see hints to this model in 's class, with its (Consumer) method, and its (Consumer, Runnable) method.

And it's a shame that we can't apply this model to Strings or anything else implementing an isEmpty() method: the Java won't let us most of its core classes.

It feels easier to implement this in a -based language like .


The of course has a long history with passing into runners and executors. We see it all over the place in and . It just always felt clunky to me. And that feeling got lifted, mostly, with Java gaining .

I remember when my colleagues first introduced me to the concept of lambdas. We were very excited.

May the remaining limitations Java imposes on lambdas get lifted soon!

Sign in to participate in the conversation

Server run by the main developers of the project 🐘 It is not focused on any particular niche interest - everyone is welcome as long as you follow our code of conduct!