安卓java lambda表达式_android中使用java8新特性lambda表达式

前言

java语言自从走入SE8版本就异常的让开发者感到兴奋,随之而来的rxjava系列等(相似于javaScript的Promise A+)的functional programing瞬间风起云涌,另很多java开发者眼前一亮 而且看到了java的闪亮的将来html

可是,做为android平台的一名App开发者,若是咱们想在android App开发过程当中使用java8的新特性那可能就另当别论了,所以今天这篇随笔就来讨论讨论“如何在android应用开发中使用java8新特性”java

android和java

当咱们一开始接触android应用开发的那刻起,咱们就被告知使用java语言来编写android程序,咱们要安装java环境,在IDE中使用java的API去编写代码逻辑。咱们使用java 6/7中java EE代码中常见的几乎全部语法和代码;咱们不多发现当把一些java EE项目的java代码原封不动移植到android应用中会出现什么问题,而且咱们不多被告知android sdk的API实质上只是标准java SE API的一个子集;另外,不多有人学习完用如何用Activity、Fragment等控件结合简单的java代码写出一个能够在手机上运行后紧接着去继续学习,去继续学习android frameWork以及native层与Linux底层的实现。react

在这里我不想大谈特谈android的实现机制和原理,只想抛砖引玉的提醒一下:android

android !=javagit

为什么须要使用java8的新特性

若是你能了解下“函数式编程(functional programing)”以及“响应式编程(reactive programing)”的魅力的话,那么你就会慢慢喜欢上他,简洁、高效的风格,若是从前你的业务逻辑代码是“面向数据抽象”的那么有了他们那就是“面向行为抽象”了github

来点栗子吧,好比下面这段代码编程

int count = 0;for(Artist artist:allArtists){if(artist.isFrom("London")){

count++;

}

}

或者使用Iterator

其实彻底能够写成这样:ide

long count =allArtists.stream()

.filter(artist->artist.isFrom("London"))

.count();

一目了然。。。函数式编程

具体java8中lambda表达式以及集合类中的stream的进阶知识不在这里讲解了,今天的目的是介绍在android开发当中如何使用java8特性函数

如何作

如今的android sdk已经能够正常使用java7以前全部语言特性了,但java8仍然只能在个别sdk level上使用,如连接里面android developer文档中所述,使用jack可让android使用部分java8的特性,并且仍然受困于sdk的版本支持;

那么如何作?才能够尽情的使用java8的语言特性在android中任何sdk版本中畅游呢?

gradle-retrolambda

https://github.com/evant/gradle-retrolambda,在android studio的构建工具gradle中使用该plugin,即可以作到在任何sdk版本种使用java 8语言新特性了。

固然,若是你仔细思考下它实现的原理不难发现,其实他跟jack相似工做在.class文件跟.dex文件这个阶段,它实质上是吧你编写的java8代码转化为java6/7的代码了而已,但即使如此,java8语言特性所带来的业务逻辑代码“可读性、可维护性”仍然是很是具备价值的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值