Android开发中如何引入Lambda表达式?
2016-12-29 08:58
477 查看
“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda
abstraction),是一个匿名函数,即没有函数名的函数。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");
});
这时候你会发现代码简洁多了
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 app开发,如何使用/引入第三方扩展jar
- 高效开发:当Android中武装上Lambda表达式
- Lambda表达式在Android开发中的应用
- Android开发 之 Android项目中如何正确的引入第三方jar包(工程)
- Kotlin的Lambda表达式以及它们怎样简化Android开发(KAD 07)
- 在Android中引入Java8的lambda表达式
- Android 开发使用 Java 8 中Lambda 表达式功能
- 简单介绍如何应用DDMS协助开发Android Apps
- Android开发中如何发送Get请求!
- Android开发中如何执行POST请求
- 如何使用Android SDK开发Android应用
- 如何使用Android SDK开发Android应用?
- 如何在Windows下搭建Android开发环境
- Android开发如何利用Google map总揽
- android中如何开发用户控件(使用已有控件组合而成的控件,非用户视图)
- 如何使用android的ndk建立native的开发环境
- C++0x尝鲜:如何获取lambda表达式的返回类型
- 如何使用android的ndk建立native的开发环境
- Android开发中如何固定屏幕显示!