Lambda表达式又被成为闭包或者匿名函数(闭包的概念主要出自于函数式编程)。
在Java中,我们可以将Lambda表达式看作是任意函数式接口类型的一个匿名实例。Java Lambda表达式的出现,从一定程度上改变了代码的编写方式,提供了更轻量级的语法实现。为了快速理解这一概念我们通过下面的示例代码进行理解:
Java Lambda Expression 出现前的函数式接口编码方式(‘重量级”编程方式)
Collections.sort(list, new Comparator<String>(){
@Override
public int compare(String str1, String str2){
return str1.compareTo(str2);
}
})123456
Java Lambda Expression 出现之后的Lambda式编码方式(“轻量级”编码方式)
Collections.sort(list, (str1, str2) -> str1.compareTo(str2));1
在使用Java Lambda Expression之后是不是感觉整个编码方式都不对劲了~^-^~。上面的Lambda表达式将会由Java编译器自动推导出参数类型,并将其翻译为对应的方法。最终我们只是用(str1, str2) -> str1.compareTo(str2)这一段表达式就完成了之前需要使用一个匿名类来完成的功能。
lambda表达式的语法由参数列表、箭头符号->和函数体组成。函数体既可以是一个表达式,也可以是一个语句块:
1.表达式:表达式会被执行然后返回执行结果。
2.语句块:语句块中的语句会被依次执行,就像方法中的语句一样。同样的在执行完所有代码语句后,return语句会把控制权交给匿名方法(Lambda表达式)的调用者。break和continue只能在循环中使用,如果函数体有返回值,那么函数体内部的每一条路径都必须返回值。
Lamda Expression
原文:https://www.cnblogs.com/wpj593780933/p/10828140.html