大家知道,使用lambda表达式,可以大大提高开发效率,减少代码。然而,lambda表达式如今只支持Java7的使用,对于那些高版本的Java8开发者而言,怎样才能使用lambda呢?幸运的是,在开源的今天,把lambda运用在java8上已不是问题。既然已经可以运用在java8上,那么如何运用在Android上呢?这才是我们最关键、最关心的。
如何做:
1.首先下载 java8 sdk,并且配置完成
2.在build.gradle中加入编译的依赖,这会使用retrolambda来编译Java代码
buildscript {
//开始加入
dependencies {
classpath 'me.tatarka:gradle-retrolambda:3.1.0'
}
//结束插入
}
同时要加入plugin声明
apply plugin: 'me.tatarka.retrolambda'
3 . 加入compileOptions,这会让IDE使用用JAVA8语法解析
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
4 . 指定将源码编译的级别,,使用下列代码,会将代码编译到兼容1.6的字节码格式
retrolambda {
javaVersion JavaVersion.VERSION_1_6
}
5 . 添加测试代码, 对于只有一个方法的接口,java8中可以使用lambda表达式代替,所以我们熟悉的设定View点击事件的代码,只要这样写就可以了
v.setOnClickListener(v1 -> Toast.makeText(getActivity(), "clicked", Toast.LENGTH_LONG).show());
对比一下之前的代码量,是不是爽爆了?!!
v.setOnClickListener(new View.OnClickListener(View v) {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "clicked", Toast.LENGTH_LONG).show()
}
});
所有代码可以在这里找到: