如此一來便能使用匿名表達方式Lambda來撰寫程式
| ref | link |
| retrolambda | https://github.com/orfjackal/retrolambda |
| gradle-retrolambda | https://github.com/evant/gradle-retrolambda |
元件的OnClickListener
//未使用 lambda
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("click")
}
});
//使用 lambda
button.setOnClickListener(view -> {
System.out.println("click")
});
//還可以更簡化
button.setOnClickListener(view -> System.out.println("click"));
Thread的Runnable//未使用 lambda
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("run");
}
});
//使用 lambda
new Thread(() -> System.out.println("run"));
lambda 語法
input -> body
view -> System.out.println("click")
//intput 種類
//無輸入 void
() -> body
//單個輸入
x -> System.out.println(x)
//多個輸入
(x, y) -> x + y;
//不省略型別
(int x, int y) -> x + y;
//body 種類
//什麼都不做
() -> {}
//單行不回傳,單行可省略{}
(x, y) -> x + y;
//單行回傳
(x, y) -> x + y
//多行不回傳
(x, y) ->{
x * x;
y * y;
}
//多行回傳
(x, y) ->{
x * x;
y * y;
return x + y;
}
安裝方式
修改app/build.gradle
在最後添加下面幾行
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'me.tatarka:gradle-retrolambda:3.4.0'
}
}
// Required because retrolambda is on maven central
repositories {
mavenCentral()
}
apply plugin: 'com.android.application' //or apply plugin: 'java'
apply plugin: 'me.tatarka.retrolambda'
最後將Compile JDK改為1.8compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
}
沒有留言 :
張貼留言