Java 8的一個大亮點是引入Lambda
表達式,使用它設計的代碼會更加簡潔 ,它是一種函數式推導語言,能夠大量減少匿名內部類那種冗餘的代碼。我們在Android開發中,經常會使用到大量的監聽設置以及異步回調等場景。這時,就可以使用Lambda
表達式來去除冗餘代碼。這裏我們在Android Studio中進行使用說明。
1、將Lambda
引入android studio
2、使用示例:
1、將 Lambda
引入android studio
在 app > build.gradle 中引入當前最新的插件'me.tatarka:gradle-retrolambda:3.7.0'
dependencies {
//gradle-retrolambda配置
implementation 'me.tatarka:gradle-retrolambda:3.7.0'
}
同時在 android{} 中配置 compileOptions ,如下
android {
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
}
注意:Android studio 的版本需要在3.0以上,jdk需要達到1.8
2、使用示例:
下面將進行 Lambda
使用演示,分爲普通寫法和
Lambda
寫法,讓大家能夠明顯的感受到區別
示例1、點擊事件
普通寫法
asdf.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
T.showLong(getMContext(),"123");
}
});
Lambda
寫法
asdf.setOnClickListener(v -> T.showLong(getMContext(),"123"));
說明:在導入 Lambda
後,可以使用 -> (減號 + 英文狀態下的右尖括號) 來省略大部分匿名內部類的代碼,其中 v 是點擊事件中的參數 (View v) 中的 v ,如果有多個參數,就用括號括起來就行了,如:(View v,String s, int i),可以寫成(v,s,i)-> X(代碼)
示例2、Runnable
普通寫法
new Thread(new Runnable() {
@Override
public void run() {
L.e("---", "4562");
}
}).start();
Lambda
寫法
new Thread( ()-> L.e("---", "4561")).start();
普通寫法
Runnable runnable1 = new Runnable() {
@Override
public void run() {
L.e("---", "7891");
}
};
runnable1.run();
Lambda
寫法
Runnable runnable2 = () -> L.e("---", "7892");
runnable2.run();
說明:如果匿名內部方法沒有參數,則可以使用括號代替。
從以上代碼可以看出,使用Lambda
寫法可以減少很多冗餘代碼,使代碼一目瞭然(瞭解
Lambda
寫法)