Android 开发使用 Java 8 中Lambda 表达式功能

简介

Android开发支持所有 Java 7 语言功能,以及一部分 Java 8 语言功能(具体因平台版本而异)。

注意:在开发应用时,可以选择使用 Java 8 语言功能。您可以将项目的源和目标兼容性值保留为 Java 7,但仍须使用 JDK 8 进行编译。

  本文主要是对Android中使用Java8中Lambda 表达式功能进行说明。如果想了解更多关于Android中对Java 8 语言功能的支持请查看官方文档。要在 Android 的较早版本中测试 Lambda 表达式,需要将项目中的的 build.gradle 文件中将 compileSdkVersion 和 targetSdkVersion 设置为 23 或更低。

开启Lambda的方式

方式一:
  使用新的 Jack 工具链,支持 Java 8 语言功能需要一个名为 Jack的新编译。Jack 仅在 Android Studio 2.1 和Android Studio 2.3上才受支持。关注官方文档后发现正在开发的AndroidStudio 3.0版本中会默认支持Java 8 语言功能,详情见 这里
  
在Android工程中(Moudle)的build.gradle 文件中配置如下:
  

android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

!注意:开启Jack后会出现以下情况

  • Instant Run 目前不能用于 Jack,在使用新的工具链时将被停用。

  • 由于 Jack 在编译应用时不生成中间类文件,依赖这些文件的工具目前不能用于 Jack。下面是一些工具示例:

    • 对类文件进行操作的 Lint 检测工具
    • 需要应用类文件的工具和库(例如使用 JaCoCo 进行仪器测试中)

方式二:

使用开源库 Gradle Retrolambda Plugin 配置如下:

步骤一 打开项目(Project)的build.gradle,在dependencies节点添加

 classpath 'me.tatarka:gradle-retrolambda:3.7.0'

添加后如下:

buildscript {
   repositories {
      mavenCentral()
   }

   dependencies {
      classpath 'me.tatarka:gradle-retrolambda:3.7.0'
   }
   ...
}

步骤二

在项目(Module)的build.gradle 的根节点添加

apply plugin: 'me.tatarka.retrolambda'

android节点增加

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }

添加完成如下:

apply plugin: 'com.android.application' 
apply plugin: 'me.tatarka.retrolambda'
 ...
android {
  ...
  defaultConfig {
    ...
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

使用前后的对比如下:

这里写图片描述

需要注意的出现Lambda格式要么对其很熟悉直接键入或者按照原来的方式键入后通过提示快捷键自动转换生成。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值