通过 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();
在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();