在Kotlin还没成为Android开发首选语言之前,我们一直是使用Java语言来开发Android应用。不过对于Lambda来说,大家应该并不陌生,因为Android Studio也可以支持JAVA 8中的Lambda表达式,只需要在app的
build.gradle
中添加以下代码:
android {
// ...
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
这个时候,如果你之前给一个按钮加点击事件的代码是这样写的:
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Android Studio会给你一个提示:
这个提示是告诉我们,可以将传入的这个匿名内部类替换成Lambda表达式,通常遇到这种情况,我们可以使用快捷键alt + Enter
让IDE快速帮我们完成转换,转换完的代码如下:
btn.setOnClickListener(v -> {
真香,5行变2行了。然后呢?我们就编写点击事件里面的代码了,至于这个Lambda,我们只知道有这么个东西,还是依靠Android Studio帮我们完成的转换,你要让我直接在setOnClickListener
里面直接手写传入Lambda?不好意思,并不习惯。
这就导致了:虽然之前我们可能就在Java中使用过Lambda,但并不知道Lambda到底是什么,只知道这样可以消除IDE的提示并让代码更加精简。
而在学习Kotlin的时候,Lambda成为了一个很重要的知识点,而且又出现了高阶函数、匿名函数、函数类型、函数引用等等这些我们可能在Java中听都没听过的词,学习起来就更加吃力了,甚至因此而放弃Kotlin。
本文的初衷就是希望把Kotlin中这部分内容讲解清楚。
Kotlin 的 Lambda 表达式,大多数人学得连皮毛都不算
Kotlin官方文档