在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中修改如下
在module build.gradle中修改如下
然后
Done!
此时回到项目中看一下,AS应该已经提示有提示了。
使用lambda表达式替换以后,原先的代码会精简很多,如果项目中刚好使用了RxJava,那代码绝对简洁明快。
当然,由于并非官方支持,使用retrolambda时难免会踩坑,遇到问题,
Go ⬇️
https://github.com/orfjackal/retrolambda
https://github.com/evant/gradle-retrolambda
目前在项目中尝试使用的是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
相关文章推荐
- "Invalid file name: must contain only [a-z0-9_.]"android项目中R.java文件丢失原因及解决方法.
- Eclipse问题集锦:errors running builder 'Android Pre Compiler' on project'项目名称':java.lang.NullPointerExce
- Android错误:项目导入时,出现Exception in thread "main" java.lang.NoClassDef、Could not write file 。。。.classpath
- android-studio中运行项目出现 java.exe'' finished with non-zero exit value 2错误
- 在AndroidStudio中设置某项目支持使用Java 8 新特性 ( eg:Lambda 表达式)
- Android 使用Java8新特性之Lambda expression (附命令者模式简化)
- android面试题目大全<第三部分>,java高级综合部分
- mac配置Android 环境,完整过程,其中包括遇到的设置$JAVA_HOME问题,新建项目报 Errors running builder 'Android Resource Manager问题
- Android 项目中部分Java文件报红,不影响运行处理
- java 8 新特性-函数式接口&lambda
- [Gradle] 如何在android项目中对纯Java module使用release/debug build并启用proguard
- Android Studio使用gradle-retrolambda支持Java8 新特性 Lambde表达式
- Android项目&Java项目导入Jar包的区别
- android面试题目大全<第二部分>,java基础部分
- errors running builder 'Android Pre Compiler' on project'项目名称':java.lang.NullPointerException
- 黑马程序员Java培训和Android培训_jdk1.5新特性
- 【贪吃蛇—Java程序员写Android游戏】系列 4.用Google SVN管理开源的Android项目
- 【贪吃蛇—Java程序员写Android游戏】系列 4.用Google SVN管理开源的Android项目
- FAQ_09_android支持Java特性
- <转> 面试java高级工程师、项目经理等的常见问题