您的位置:首页 > 移动开发 > Android开发

Android开发中如何引入Lambda表达式?

2016-12-29 08:58 477 查看
“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