如何在android中使用lambda表达式

Ali*_*ash 6 lambda android android-gradle-plugin

我在尝试使用lambda表达式时遇到此错误.

错误:

错误:(122,42)错误:-source 1.7不支持lambda表达式(使用-source 8或更高版本启用lambda表达式)

如何解决它,请注意我的android工作室是3.0

小智 13

将以下代码添加到您的应用级别gradle:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
Run Code Online (Sandbox Code Playgroud)


Thu*_*der 10

因为你可能正在使用Java 7而且实际上Retrolambda是一个我们可以使用的库Java 8 lambda expressions.

那么如何设置: -

将以下内容添加到您的 project’s main build.gradle

 classpath 'me.tatarka:gradle-retrolambda:3.2.3'
Run Code Online (Sandbox Code Playgroud)

然后将其添加到 your application module’s build.gradle

apply plugin: 'me.tatarka.retrolambda'
Run Code Online (Sandbox Code Playgroud)

然后我们需要添加这些行 your application module’s build.gradle

android {
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
Run Code Online (Sandbox Code Playgroud)

并完成后,您可以像下面这样使用它: -

例如.)单击带有Retrolambda的按钮.

  // RETROLAMBDA WAY
        clickMeBtn.setOnClickListener(view ->
                Toast.makeText(MainActivity.this,
             "This is the way to click a button to make a toast with RetroLambda !", Toast.LENGTH_LONG).show());
Run Code Online (Sandbox Code Playgroud)

匿名类new View.OnClickListener()可以替换为lambda.