Android开发中如何引入Lambda表达式?
来源:互联网 发布:彩票通软件下载 编辑:程序博客网 时间:2024/06/06 10:00
“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。
Android开发中如何引入Lambda表达式?
我们知道Android开发是用Java语言来编写的,而java语言从java8开始才引入了Lambda表达式。所以Android开发想要用Lambda表达式则必须用Java8编译。
AndroidStudio 引入Java8编译有两种方式:
第一种方式:利用外部库插件方式 github地址:https://github.com/evant/gradle-retrolambda
在project build.gradle里面引入插件路径
module里面的build.gradle如下配置:
applyplugin:'com.android.application'//or apply plugin: 'java'
applyplugin:'me.tatarka.retrolambda'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
具体详情可以参考GitHub地址
第二种方式:直接在Module里面的build.gralde配置
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
如果你直接这样运行,编译会报如下错误
Error:Jack is required to support java 8 language features. Either enable Jack or remove sourceCompatibility JavaVersion.VERSION_1_8.
这时候就要引入AndroidStudio的Jack编译啦。
在 defaultConfig {
...
jackOptions{
enabled:true
}
}
这时候就引入了jack编译啦。需要了解Jack编译请自行查阅官方文档
https://developer.android.com/guide/platform/j8-jack.html
个人更喜欢第一种方式:因为引入Jack编译会有各种巨坑
Lambda书写:
没有使用Lambda的老方法:
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
System.out.println("Actiondetected");
}
});
引入了Lambda写法:
button.addActionListener(()->{
System.out.println("Actiondetected");
});
这时候你会发现代码简洁多了
- Android开发中如何引入Lambda表达式?
- android中lambda表达式的使用,以及如何引入
- Android Studio 引入Lambda表达式
- AS中引入Lambda表达式
- Android中如何使用lambda表达式
- Android中使用Lambda表达式高效开发
- lambda表达式介绍以及Android Studio引入lambda
- Lambda表达式的引入
- 如何在Android studio中使用java8 的Lambda表达式
- Android 开发使用 Java 8 中Lambda 表达式功能
- Android 中使用Lambda表达式
- Android中使用lambda表达式
- Android中使用lambda表达式
- Android 中使用lambda表达式
- Android 中使用Lambda表达式
- Android 中使用Lambda表达式
- Android中使用Lambda表达式
- android中Lambda表达式写法
- 十行 js 获取带有双字节字符的字符串长度
- Java.math.BigInteger.testBit()方法实例 权限设置
- 星型和雪花型模式
- iOS-系统自带xml解析(自定义封装)
- Quartz 入门详解
- Android开发中如何引入Lambda表达式?
- Linux部署svn环境及创建新项目
- Qt中用QuaZip来压缩和解压缩文件
- 基于注解的Spring AOP的配置和使用--转载
- linux运维笔记1
- centos7下设置vim格式
- Cesium.js加载3D模型学习篇
- [Leetcode] Jump Game
- 【转】如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源