In javascript, there's the common pattern of creating an anonymous function and immediately invoking it (usually this is called a self-executing anonymous function or an immediately-invoked function expression).
With Java 8 lambdas, is there a standard way to replicate this behaviour?
Something like (() -> doSomething())()
.
This question asks basically the same question, but for Java 7. I'm explicitly looking for constructs which utilize lambdas.
Not without declaring the type as well. Since Java is a statically-typed language, and functions are not first class citizens, the compiler needs to know what type your lambda is. A function can't just be free-floating, it always needs to be associated with either a class or an instance of a class.
But: You can cast the lambda to the
Runnable
type, and give the compiler a hint as to what kind of@FunctionalInterface
you're implementing:Or without the braces, which makes it a one-liner:
I imagine that's about as close as you'll get!
What about something like