通过 Lambdas 自执行匿名函数

Self Executing Anonymous Functions via Lambdas

在javascript中,有创建匿名函数并立即调用它的常见模式(通常这称为self-executing anonymous function or an immediately-invoked function expression)。

使用 Java 8 个 lambda,是否有复制此行为的标准方法? 类似于 (() -> doSomething())().

This question 问了基本相同的问题,但是 Java 7. 我正在明确地寻找利用 lambda 的结构。

也不能不声明类型。由于 Java 是一种静态类型语言,并且函数不是第一个 class 公民,因此编译器需要知道您的 lambda 是什么 type 。函数不能只是自由浮动,它总是需要与 class 或 class.

的实例相关联
Runnable r = () -> {
    System.out.println("Hello world!");
};
r.run();

但是: 您可以将 lambda 转换为 Runnable 类型,并向编译器提示您是哪种 @FunctionalInterface实施:

((Runnable)() -> {
    System.out.println("Hello world!");
}).run();

或者没有大括号,这使得它成为一个单线:

((Runnable)() -> System.out.println("Hello world!")).run();

我想这与您所能得到的差不多!

这样的东西怎么样
((Runnable)(() -> System.out.println("Foobar"))).run();