一、前言
Android Stdio默认情况下,即使你使用的是jdk8也会报错,要是想在as中使用lambda,必须借用一个插件retrolambda。该插件将java 8中的lambda表达式特性兼容到java 5
二、安装插件
第一步、在项目的根目录下的build.gradle中加入如下代码
classpath 'me.tatarka:gradle-retrolambda:3.2.0'
整个文件内容为:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
classpath 'me.tatarka:gradle-retrolambda:3.2.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
第二步、在modu目录下的build.gradle中使用插件,代码如下
apply plugin: 'me.tatarka.retrolambda'
接着在android节点下加入
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
这样,我们就可以在as中使用lambda了。
三、简单使用
rx中使用lambda最能体会其好处了。
代码如下:
Observable.just("Hello, map!")
.map(new Func1<String, Object>() {
@Override
public Object call(String s) {
return s + "--by liwen";
}
})
.subscribe(s-> System.out.println(s));