Title

android上的JAVA8:使用retrolambda - (一个让android支持lambda语法的扩展框架)

retrolambda GitHub
gradle-retrolambda plugin
android上的JAVA8:使用retrolambda
jdk1.8新特性之lambda表达式及在Android Studio中的使用

Java8 lambda表达式10个示例
Java 8简明教程

Java8引入了 lambda 表达式,让许多开发者激动不已,本文介绍如何在Android上使用lambda.

首先下载 java8 sdk,并且配置完成
在 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()
    }
});

所有代码可以在这里找到:

http://tinyurl.com/qdbae7d

retrolambda配置参考
jdk1.8新特性之lambda表达式及在Android Studio中的使用
Java 8简明教程

问题分析

Lint fails on java files that have lambdas.

由于Android’s lint doesn’t understand java 8 syntax and will fail silently or loudly.
evant/android-retrolambda-lombok

文章目录
  1. 1. android上的JAVA8:使用retrolambda - (一个让android支持lambda语法的扩展框架)
  2. 2. 问题分析
  3. 3. Lint fails on java files that have lambdas.