Android Studio 中使用 Lambda表达式

来源:互联网 发布:windows网络命令 编辑:程序博客网 时间:2024/05/16 01:23

Lambda:是Java 8 的重要更新,Lambda 表达式支持将代码块作为方法参数,允许使用更简洁的代码来创建只有一个抽象方法的接口的实例。在我们Android开发中经常会给View添加监听事件,如下代码:

findViewById(R.id.iv_refresh).setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {            Toast.makeText(this, "onClick", Toast.LENGTH_SHORT).show();        }    });

接下来让我们看看用 Lambda 表达式的写出来的代码:

findViewById(R.id.iv_refresh).setOnClickListener(            v -> Toast.makeText(this, "onClick", Toast.LENGTH_SHORT).show());

这样一比较下来是不是感觉代码看起来清爽多了,还是很强大的。

根据上面的语法,我们可以看出 Lambda 的主要作用就是代替匿名内部类的繁琐语法,并且是以三部分组成:

  • 形参列表 : 形参列表允许省略形参类型。如果形参列表中只有一个参数,甚至连形参列表括号也可以省略。

  • 箭头 (->):必须通过英文的中划线和大于符号组成。

  • 代码块:如果代码块只包含一条语句, Lambda 表达式允许省略代码块的花括号,那么这条语句就不要用花括号表示语句结束。 Lambda 代码块只有一条 retrun语句,甚至可以省略 return 的关键字。Lambda 表达式需要返回值,而他的代码块中仅有一条省略了 return 的语句,Lambda 会自动返回这条语句的值。


我们知道Andoroid中最高只能使用JDK 7,而Lambda是JDK 8后的新特性,所以是没法通过编译的;但是庆幸的是有大神为我们编写了 Gradle Retrolambda Plugin,我们clone过来使用就OK了。

下面给出地址

作者Github下载地址
Gradle Plugin Jar包下载地址

下面我们开始在Android Studio中添加配置,以 3.2.5版本为例:

  • 将 Jar 包复制到Module的libs目录下,并且关联Jar包。

  • 接下来我们在 Project 的 build.gradle -> dependencies 节点中添加依赖。

    dependencies {    classpath 'me.tatarka:gradle-retrolambda:3.2.5'}
  • 接着我们在 Mudule 的 build.gradle 中 空白处添加 plugin 。

    apply plugin: 'com.android.application'  //这个默认就有的apply plugin: 'me.tatarka.retrolambda'
  • 最后我们接着在 Mudule 的 build.gradle -> android 节点中添加JDK 版本。

    compileOptions {    sourceCompatibility JavaVersion.VERSION_1_8    targetCompatibility JavaVersion.VERSION_1_8}

这样就配置好了 Lambda ,最后 Rebuild 一下 Project 就可以使用了。

1 0
原创粉丝点击