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

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

回答: 在KotlinLambda表达式是一种简洁的方式来定义函数。通过使用Lambda表达式,我们可以将函数作为参数传递给其他函数,或者在需要函数作为返回值的地方使用它们。Lambda表达式的基本语法是使用箭头符号(->)将参数列表和函数体分隔开。例如:{参数列表 -> 函数体}。当Lambda表达式只有一个参数时,可以使用it关键字来表示该参数,而不需要指定参数名。这是Kotlin语言的约定。此外,在Kotlin还存在一种称为"尾随Lambda表达式"或"末尾Lambda表达式"的语法,当一个函数的最后一个参数是一个函数类型时,我们可以将Lambda表达式写在大括号内,而不是传递给函数的圆括号内。这种语法可以进一步简化代码。Lambda表达式在Kotlin被广泛运用,尤其在Android开发,它能够减少代码量并提高开发效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Kotlin——高级篇(一):Lambda表达式详解](https://blog.csdn.net/weixin_30376453/article/details/95751745)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [kotlin之lambda表达式](https://blog.csdn.net/flytosky21/article/details/130030489)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值