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 #Java's #Optional class, with its #ifPresent(Consumer) method, and its #ifPresentOrElse(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 #programming #language won't let us #subclass most of its core classes.
It feels easier to implement this in a #trait-based language like #RustLang.
The #Java #programming #language of course has a long history with passing #Runnables into #thread runners and executors. We see it all over the place in #Swing and #JavaFX. It just always felt clunky to me. And that feeling got lifted, mostly, with Java gaining #lambdas.
I remember when my #CSharp colleagues first introduced me to the concept of lambdas. We were very excited.
May the remaining limitations Java imposes on lambdas get lifted soon!
It's a shame that you can't subclass String. This was by design, just so nobody would try to extend it.
But that was extremely short sighted: Subclassing String, even just to give it a new name would allow us to have wonderful classes for validation:
Class PhoneNumber extends String;
Class Address extends String;
And so on. String dependent methods would work normally, and business logic would do its magic.
But nooo, make String final. 🙄
@rick_777 Indeed. And I won't be the first Java developer who found a need to facade the String class with a custom implementation just to be able to apply type semantics.
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!