【发布时间】:2014-10-23 06:33:30
【问题描述】:
我正在学习 Java 8 的新功能 Lambda 表达式。这是我使用 Lambda 表达式的“HelloWorld”类
public class LambdaHelloWorld {
interface HelloWorld {
String sayHello(String name);
}
public static void main(String[] args) {
HelloWorld helloWorld = (String name) -> { return "Hello " + name; };
System.out.println(helloWorld.sayHello("John Doe"));
}
}
这种风格与 Groovy 闭包非常相似。这是 groovy “HelloWorld”
def sayHello(name) {
println("Hello $name!")
}
def clos = {name -> sayHello(name)}
clos.call('John Doe')
我认为这两个代码彼此之间的差异较小。Java Lambda 表达式是类似于 Groovy 闭包的逻辑或风格吗?
【问题讨论】:
-
您可以简单地写成
name -> "Hello "+name而不是(String name) -> { return "Hello " + name; },这要短得多。顺便说一句,在对 Groovy 了解不多的情况下,这些示例看起来并不等同于我。 Java 示例是一个将String值映射到String值的函数,而您的Groovy 示例看起来像一个使用String的操作。 -
@Holger 或者更短的
"Hello "::concat