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
写法)