在javascript中,存在创建匿名函数并立即调用它的常见模式(通常称为自执行匿名函数或立即调用的函数表达式)。
使用Java 8 lambda,是否有标准方法可以复制此行为?有点像(() -> doSomething())()。
(() -> doSomething())()
这个问题基本上提出了相同的问题,但是对于Java7。我正在明确地寻找使用lambda的构造。
也不是没有声明类型。由于Java是静态类型的语言,并且函数不是一等公民,因此编译器需要知道lambda是什么 类型 。一个函数不能只是自由浮动的,它总是需要与一个类或一个类的实例相关联。
Runnable r = () -> { System.out.println("Hello world!"); }; r.run();
但是: 您可以将lambda转换为Runnable类型,并向编译器提示@FunctionalInterface您要实现的类型:
Runnable
@FunctionalInterface
((Runnable)() -> { System.out.println("Hello world!"); }).run();
或不带花括号,使其成为一线式:
((Runnable)() -> System.out.println("Hello world!")).run();
我想那差不多就到了!