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");
});
这时候你会发现代码简洁多了

1 0
原创粉丝点击