JDK8新特性
程序员文章站
2024-03-23 14:16:28
...
Lambda语法
- Lambda是什么?
"Lambda表达式"(Lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的Lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的,所以试着使用匿名函数的方式来理解。
- 语法是什么?
包含三个部分:一个括号内用两个逗号跟风的形式参数,参数是函数式接口里面方法的参数,一个箭头符号:->
方法体,可以是表达式和代码块,方法体函数式接口里面方法的实现,如果是代码块,则必须用{ }来包裹起来,且需要一个return返回值,但有个例外,若函数式接口里面方法返回值是void,则无需 { }。
- Lambda表达式 vs 匿名类
既然lambda表达式即将正式取代Java代码中的匿名内部类,那么有必要对二者做一个比较分析。
不同点 一:关键字this,匿名类的this关键字指向匿名类。lambda表达式的this关键字指向包围lambda表达式的类。
不同点 二:编译方式。Java编译器将lambda表达式编译成类的私有方法。
快速开始
retrolambda插件
Agradle plugin for getting java lambda support in java 6,7 and android-
引入retrolamdba插件:
[ 文件]build.gradle apply plugin: 'me.tatarka.retorlambda'
设置编译器选项(可能也可以不写)
如果不设置的话带有lambda表达式的代码在android studio里面不能识别[文件]app/build.gradle
compileOptions{
targetCompatibility 1.8
sourceCompatibility 1.8
}