作为一名Java开发者,或许你时常因为缺乏闭包而产生许多的困扰。幸运的是:Java’s 8th version introduced lambda functions给我们带来了好消息;然而,这咩有什么卵用,在android上面,我们仍旧只能使用Java7.

那么现在情况如何?哈哈,动力IT教育的java高级导师我们android developer也能用啦!我们的老伙计Esko Luontola发现了在android上面使用lambda的方法,真是棒啊!那么,我们来看看是怎么实现的吧!

Just as there was Retroweaver et al. for running Java 5 code with generics on Java 1.4。Retrolambda允许我们能够在Java 8或者更低的版本上使用lambda表达式。这真是太棒了:在Java 7的虚拟机中,我们能够运行在8上编译完成的代码。

现在,我们使用Android Studio和gradle来实现吧,和Retrolambda签订契约,成为马猴烧酒吧(雾! (转载自 http://www.puiedu.com/applyOnline_daily_news.php?id=84 动力IT教育

Install JAVA 8 SDK

下载java-8>能搞起,前提是要使用Java 8的SDK,在这里能够下载:JAVA 8

好了,现在在android studio中设置使用java 8吧。

Mac:

File > Project structure. 需要将这样设置:

别的可以参照设置。

Set up Gradle

你真棒呀!差不多你快好了。最后的步骤就是编辑Gradle的一些配置文件了。我们将会使用Retrolambda plugin from Evan Tatarka,这样才能够支持lambda表达式。

First、打开app模块中的build.gradle文件,改变compileOption节点下的配置:

android {

}

compileOptions {

sourceCompatibility JavaVersion.VERSION_1_8

targetCompatibility JavaVersion.VERSION_1_8

}

}

Second、在同样的文件中添加:

buildscript {

repositories {

mavenCentral()

}

dependencies {

classpath 'me.tatarka:gradle-retrolambda:2.5.0'

}

}

repositories {

mavenCentral()

}

apply plugin: 'me.tatarka.retrolambda'

然后就OK啦,尝试build你的工程吧,肯定棒棒哒~

需要注意的是:Retrolambda仅仅允许你使用Java 8中的lambda表达式,其他的特性在android中是行不通的。

在Android中使用Java 8的lambda表达式的更多相关文章

  1. Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解

    Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解 (本文转自: http://blog.csdn.net/yinhaide/article/details/44756 ...

  2. android中在java代码中设置Button按钮的背景颜色

    android中在java代码中设置Button按钮的背景颜色 1.设置背景图片,图片来源于drawable: flightInfoPanel.setBackgroundDrawable(getRes ...

  3. Java 终于有 Lambda 表达式啦~Java 8 语言变化——Lambda 表达式和接口类更改【转载】

    原文地址 en cn 下载 Demo Java™ 8 包含一些重要的新的语言功能,为您提供了构建程序的更简单方式.Lambda 表达式 为内联代码块定义一种新语法,其灵活性与匿名内部类一样,但样板文件 ...

  4. C++11中新特性之:lambda 表达式

    首先摆出Lambda表达式语法 lambda-expression: lambda-introducer lambda-declaratoropt compound-statementlambda-i ...

  5. 在android 中开发java.net.SocketException: socket failed: EACCES (Permission denied) 报错

    在android中下载文件,写好下载文件的代码后需要配置相应的权限 <uses-permission android:name="android.permission.INTERNET ...

  6. java语言中的匿名类与lambda表达式介绍与总结 (Anonymous Classes and Lambda Expressions)

    2017/6/30 转载写明出处:http://www.cnblogs.com/daren-lin/p/anonymous-classes-and-lambda-expressions-in-java ...

  7. IDEA问题java: -source 1.6 中不支持diamond、 lambda 表达式

    文章目录 一.问题:连片的java: -source 1.6 中不支持 diamond 运算符.lambda 表达式 二.解决方法: 1.在微信群里问大佬,大佬在玩游戏,回复的比较慢 2.自己查Goo ...

  8. 【转】Java 8十个lambda表达式案例

    1. 实现Runnable线程案例 使用() -> {} 替代匿名类: //Before Java 8: new Thread(new Runnable() { @Override public ...

  9. Java 8十个lambda表达式案例

    1. 实现Runnable线程案例 使用() -> {} 替代匿名类: //Before Java 8: new Thread(new Runnable() { @Override public ...

随机推荐

  1. 火车采集器 帝国CMS7.2免登录发布模块

    帝国cms7.2增加了金刚模式,登录发布有难度.免登录发布模块配合火车采集器,完美解决你遇到的问题. 免登录直接获取栏目列表 通过文件内设置密码免登录发布数据 帝国cms7.2免登陆文章发布接口使用说 ...

  2. vs文件属性(生成操作)各选项功能(发布Web项目时使用)

    转自:http://www.cnblogs.com/paulhe/p/4490583.html 右击项目里的文件,选择属性(F4)会有[生成操作]的选项. 它提供了14项选择,如图: 在这说一下常用的 ...

  3. Android基础开发文档汇总

    一.Android 基本组件 1. Android中PackageManager使用示例 :  http://blog.csdn.net/qinjuning/article/details/68678 ...

  4. MFC 编辑框中字体大小改变,行高不能改变,只能显示一半的问题,已解决。

    CKagulaCEdit是CEdit的一个继承类,m_edit的CKagulaCEdit类型的一个变量 调用的时候,是这样的: 编辑框中字体大小改变,行高不能改变,只能显示一半的问题,问题如下: 这时 ...

  5. JavaScript中的分支结构

    说到JavaScript中的分支结构,我们就不得不提到流程控制这个词,我们所有的程序都是由数据和算法组成的.程序=数据+算法通常我们所说的算法都可以通过"顺序","分支& ...

  6. Caused by: java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode

    进行 spring mvc jpa整合时.Junit方法测试时. 异常: org.springframework.beans.factory.BeanCreationException: Error ...

  7. c#全局鼠标事件以及鼠标事件模拟

    最近在编写Max插件时,其主容器FlowLayoutPanel由于隐藏了滚动条,要实现按住鼠标中键上下拖动的功能,因此尝试了全局鼠标事件.以及鼠标勾子,可惜由于Max不争气?都未能实现,于是代码报废, ...

  8. .NET Framework 的 Quirk Version

    今天在CSDN上看到一个帖子 :".net 4.0和4.5不同版本的Uri.ToString行为不同?", 调试.NET Framework 源代码发现,是这句代码起的作用 int ...

  9. dijit.form.Select 基本用法

    dijit.form.Select 1)创建: var division = new dijit.form.Select({ id: "Division",//id必须唯一 nam ...

  10. shell中的语法(1)

    反引号 命令替换.将命令的输出放在命令行的任意位置. eg. [root@gam ~]# echo The Data is `date` The Data is Fri Nov 18 10:13:56 ...