lambda 語法
input -> body
view -> Log.d(“l”,”log”)
intput 类型
- 无参
- void () -> body
- 单个参数
- x -> Log.d(“l”,”log”)
- 两(多)个参数
- (x, y) -> x + y;
- 不省略参数类型
- (int x, int y) -> x + y;
body 类型
- 方法体为空
- (x, y ) -> {}
- 单行,可省略{}
- (x, y) -> x + y
- 多行无返回值(void )
- (x, y) ->{ x * x; y * y; }
- 多行有返回值
- (x, y) ->{ x * x; y * y; return x + y; }
在 Android 使用
具体参见:https://github.com/evant/gradle-retrolambda
- 下载安裝jdk8,并记得配置
- 在 build.gradle(Project)中加上下列(加粗部分)内容
apply plugin: 'com.android.application'
apply plugin:'me.tatarka.retrolambda'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'me.tatarka:gradle-retrolambda:3.2.5'
}
}
// Required because retrolambda is on maven central
repositories {
mavenCentral()
}
3.在 build.gradle(Module) 中添加一下部分
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
例子(按钮监听事件)
使用前的代码:
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d("onClick", "onClick");
}
});
使用后的代码:
button.setOnClickListener(view->Log.d("onClick", "onClick"));