簡介:
JDK1.8後java開始支持Lambda表達式,使用Lambda表達式我們就可以在Android中替換匿名類的寫法。本來一個Button點擊事件監聽要寫6行代碼,我們1行就可以搞定。
1.引入依賴
implementation 'me.tatarka:gradle-retrolambda:3.6.0'
2.修改我們JDK成1.8
在Android studio中打開File>project Structure>Modules,將我們的JDk設置成1.8的,快捷鍵是ctrl+shift+alt+s。
3.使用Lambda表達式
設置Button監聽舊的寫法:
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//執行代碼
}
});
使用Lambda表達式,v代表onClick(View view)中的view
button.setOnClickListener(v -> {
//執行代碼
});
創建線程舊的寫法
new Thread(new Runnable() {
@Override
public void run() {
//執行代碼
}
}).start();
使用Lambda表達式,run()方法沒有參數,顧使用()來表示
new Thread(() -> {
//執行代碼
}).start();
checkBox狀態改變監聽舊寫法
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
//執行代碼
}
});
使用Lambda表達式,onCheckedChanged()方法有倆個參數,因此用()把參數包起,buttonView對應compoundButton,isChecked對應b
checkBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
//執行代碼
});
使用起來還是很方便的:匿名內部類中的方法沒有參數時就用()表示,有一個參數是就用一個參數v表示,如果有多個參數則用()包起來,參數之間逗號隔開。