您的位置:首页 > 移动开发 > Android开发

在Android项目中启用Java 8的部分特性--Lambda & Method References

2016-12-02 22:04 232 查看
Android N发布时同时发布了一个新的编译工具Jack(AS2.1+支持),基于Jack我们可以使用Java 8 的部分特性,在低版本机器上能使用的更少,同时Jack也有诸多不完善,工具链的改变难免会引入不可预知的问题,目前我个人也只是玩玩而已,并未在项目中使用。

目前在项目中尝试使用的是Github上的retrolambda,基于它有人开发了gradle plugin,使用起来更方便,目前最新版本3.4.0,支持Android gradle plugin 1.5.0+。

retrolambda不仅支持Java 8 的lambda表达式,还支持Method References和其它我们怎么用过的几项特性(┑( ̄Д  ̄)┍),详见backported-language-features

在Android项目中使用时确保本地安装Java版本为Java 8

然后在project build.gradle中修改如下

repositories {
mavenCentral()
}

dependencies {
classpath 'me.tatarka:gradle-retrolambda:3.4.0'
}

在module build.gradle中修改如下

#add
apply plugin: 'me.tatarka.retrolambda'

android {
#add in android
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

然后
sync
rebuild project


Done!

此时回到项目中看一下,AS应该已经提示有提示了。

使用lambda表达式替换以后,原先的代码会精简很多,如果项目中刚好使用了RxJava,那代码绝对简洁明快。

当然,由于并非官方支持,使用retrolambda时难免会踩坑,遇到问题,

Go ⬇️

https://github.com/orfjackal/retrolambda

https://github.com/evant/gradle-retrolambda
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐