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

2023-05-16

简介

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格式要么对其很熟悉直接键入或者按照原来的方式键入后通过提示快捷键自动转换生成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 开发使用 Java 8 中Lambda 表达式功能 的相关文章

  • 测试分析报告

    测试分析报告 1 引言 1 1 1 编写目的 1 1 2 背景 1 1 3 定义 2 1 4 参考资料 2 2 测试概要 2 3 测试结果及发现 3 3 1 测试 1 xff08 normal xff09 3 3 2 测试 2 xff08
  • 【Docker&ARM】ARM架构服务器上docker的安装

    使用官方仓库安装 Install using the repository https docs docker com install linux docker ce centos 不同Linux发行版 xff0c 添加相应的仓库即可安装
  • 【字符集】解决docker 容器中中文乱码问题

    一个后端服务容器中解压zip包 xff0c 释放出带文件名带中文的文件 xff0c 中文显示被 代替 xff0c 初步推断是服务基础镜像系统字符集出现问题 进入容器中端界面 xff0c 手动创建带中文的文件 xff0c 果不其然 xff0c
  • 【bash】关于shell中 bash -c 执行命令或者可执行文件

    我们知道 c 的意思是 command xff0c 所以 bash c 后面应该跟一个 command 用法 xff1a bash c cmd string 通常使用shell去运行脚本 xff0c 两种方法 bash xxx sh xff
  • 【fiddler】用fiddler实现android手机抓包

    一 fiddler的简介 fiddler是位于客户端和服务器端之间的代理 xff0c 也是目前最常用的抓包工具之一 它能够记录客户端和服务器之间的所有 请求 xff0c 可以针对特定的请求 xff0c 分析请求数据 设置断点 调试web应用
  • 【HttpCanary】Android网络分析工具HttpCanary使用教程

    黑科技HttpCanary xff0c 最强大的Android网络分析工具 https juejin cn post 6844903745562607624 HttpCannary 抓包视频教程 https space bilibili c
  • 【kafka】Kafka 可视化工具Kafka Eagle安装和使用

    一 背景 Kafka产线环境需要管理的Topic和Consumser越来越多 xff0c 使用命令行工具进行管理会非常繁杂 因此 xff0c 大数据平台上需要一套Kafka的管理监控系统 xff0c Kafka Eagle Kafka Ea
  • 【history】如何丝滑地记录Linxu命令行操作历史?

    对于运维来讲 xff0c history命令应该说是用到最多的了 xff0c 尤其是一些老旧的系统 xff0c 一些历史命令更多时候 xff0c 相当于是运维手册 xff0c 但是history命令有时候也有很多不方便的地方 今天介绍一种方
  • 【CPU】如何正确理解 CPU 使用率和平均负载的关系?

    什么是 CPU 使用率 xff1f CPU 使用率就是 CPU 非空闲态运行的时间占比 xff0c 它反映了 CPU 的繁忙程度 比如 xff0c 单核 CPU 1s 内非空闲态运行时间为 0 8s xff0c 那么它的 CPU 使用率就是
  • 【分布式】日志技术

    日志技术是宕机恢复的主要技术之一 日志技术最初使用在数据库系统中 严格来说日志技术不是一种分布式系统的技术 xff0c 但在分布式系统的实践中 xff0c 却广泛使用了日志技术做宕机恢复 xff0c 甚 至如BigTable 等系统将日志保
  • 【故障诊断】【git】git只能下载一个分支,怎么办?

    很多朋友可能都会遇到一个问题 xff0c 就是远程的git明明有两个分支 xff0c 但是却只能下载一个 xff0c 这样该怎么处理呢 xff1f 首先要澄清 xff0c git clone确实只能下载一个分支 xff0c 我们只能先把ma
  • 23种设计模式

    目录 创建型 1 Factory Method xff08 工厂方法 xff09 2 Abstract Factory xff08 抽象工厂 xff09 3 Builder xff08 建造者 xff09 4 Prototype xff08
  • Docker的asp.net core应用部署系列目录(完结)

    第一章 实验基础环境 本系列将用VirtualBox虚拟机安装ubuntu desktop 18 版本进行演示 xff0c 安装方式自行探索 xff0c 亦可购买各种云的linux服务器 章节间多少有依赖 xff0c 请根据自身情况跳过熟悉
  • Docker的asp.net core应用部署系列—— docker运行asp.net core应用镜像

    本系列目录请看这里 https blog csdn net michel4liu article details 80819510 我们接着上篇 xff0c 已经编译好镜像 xff0c 本篇将介绍两种启动方式 xff0c 交互模式启动和后台
  • Docker的asp.net core应用部署系列——进入正在运行的docker容器里面

    本系列目录请看这里 https blog csdn net michel4liu article details 80819510 我们之前已经可以通过交互或后台方式启动一个容器 xff0c 有时我们需要进入docker里面看一些log或者
  • DATAX:MongoDB增量数据写入到mysql中

    项目场景 xff1a 简述 xff1a 使用DATAX进行Mongo的数据抽取 xff0c 然后写入到mysql中 xff0c 其中会牵涉到全量数据的写入和增量数据的写入 全量 数据的写入我们只需要正常写JSON模板即可 xff0c 使用c
  • 无人机自动驾驶软件系列 E04

    无人机自动驾驶软件系列 E04 xff1a 深度估计 xff0c 八叉树地图以及路径规划 详细配置https gaas gitbook io guide software realization build your own autonom
  • Window11安装如何跳过TPM2.0这一步

    最近想体验一把window11 xff0c 怎奈自己的电脑太老了 xff0c 显示不能安装 xff0c 网上大佬们都说是tpm2 0的问题 xff0c 顺着这个角度 xff0c 找到了一个国外大神的解决办法 1 在出现 Win11 会提示
  • 修改已运行Docker容器的端口映射

    方法一 删除容器 xff0c 重新新建容器多加一个 p端口映射即可 方法二 修改容器配置文件 重启docker服务 模拟创建运行中的容器 span class token punctuation span root 64 redmine t
  • e指数函数

    使用win自带的计算器 xff0c 进行以e为底的指数函数进行运算时 xff0c 发现计算器上的EXP键只能用做表示10的多少次方 xff0c 如5e3 xff0c 指的是5乘以10的3次方 xff0c 及5000 查了一下 xff0c 也

随机推荐

  • xsens惯导在ROS下输出汇总

    rostopic list 分别记录下每个对应的信息 xff1a 1 rostopic echo diagnostics header seq 454 stamp secs 1572609754 nsecs 307622909 frame
  • c 编程中extern关键字 使用跨文件全局变量

    我们知道 xff0c 程序的编译单位是源程序文件 xff0c 一个源文件可以包含一个或若干个函数 在函数内定义的变量是局部变量 xff0c 而在函数之外定义的变量则称为外部变量 xff0c 外部变量也就是我们所讲的全局变量 它的存储方式为静
  • 年度回忆录(?——2011.01)

    这是在CSDN 上的第一篇总结 xff08 或者说是回忆录 xff09 xff0c 个人认为 xff1a 总结 xff0c 尤其是年度总结是十分必要的 她可以很好的映射出自己以往的不足 xff0c 并为自己下一步的学习指明方向 以前在网易上
  • 使用JMF实现java写自己的视频播放器

    JMF这个多媒体开发框架太牛了 xff0c 简单的几句代码就能实现一个视频播放器的开发 xff0c 厉害 xff0c 就是支持的格式少了一些 xff0c 没关系 xff0c 这个视频播放器可以播放mpg xff0c avi fvl等等 xf
  • 相机标定:关键点法 vs 直接法

    相机标定中最常见的方法是关键点法 xff0c 比如 OpenCV 和 MatLab 中使用棋盘格 圆阵列等二维图案进行标定 xff0c 这上面的棋盘格角点和圆心就是所谓的关键点 虽然关键点法有很多优点 xff0c 但在某些情况下容易遇到标定
  • 8本推荐游戏开发书籍

    很多刚刚接触游戏开发的朋友经常问我 xff1a 如何开始学习游戏开发 xff1f 我从事游戏开发行业很多年了 xff0c 坦率地讲 xff0c 开发游戏充满挑战性 xff0c 需要开发人员具备大量的技能与积极的创新精神 希望这篇小文能帮助朋
  • Maxwell启动停止脚本

    Maxwell启动停止脚本 进入 maxwell bin nbsp 直接运行下面的内容 生成脚本 bin bash description maxwell File maxwell Description Starts and stops
  • Epoll 的time_out参数引发的cpu占用问题

    转自 xff1a https www cnblogs com Jimmy104 p 5258205 html 针对自己写的一个服务器网络引擎Engine 文章后面附上源码 使用epoll 刚刚开始时候发现占用CPU 特别高 xff0c 但是
  • 【周志华机器学习】集成学习

    第八章 集成学习 个体与集成BoostingBagging 与随机森林Bagging随机森林 结合策略平均法投票法学习法 多样性 个体与集成 集成学习通过构建并结合多个学习器来完成学习任务 xff0c 也被称为多分类器系统 集成学习的一般结
  • 用户句柄表的遍历

    私有句柄表 HANDLE TABLE ENTRY的Object直接指向 OBJECT HEADER不用减 span class token macro property span class token directive hash spa
  • 树莓派安装后--安装必要软件(个人版)

    树莓派安装后 安装必要软件 xff08 个人版 xff09 查看是哪个版本 lsb release a 查看raspbian是哪个版本 getconf LONG BIT 查看系统位数 uname a kernel 版本 opt vc bin
  • 固定翼姿态控制流程

    固定翼控制流程 主文件夹 子文件 fw att control位于src moudle文件夹下 fw att control main c 主文件 fw att control params c 主文件参数 CMakeList attitu
  • 固定翼位置控制_Tecs

    Tecs在位置控制中主要控制纵向的高度 xff0c 因为升降舵可以控制飞机的高度 xff0c 油门可以控制飞机的速度 xff0c 但是单单通过升降舵改变高度会使速度下降或者上升 xff0c 单单通过油门改变速度会使高度改变 xff0c 所以
  • 固定翼位置控制_L1

    L1算法控制航向 飞机从现在位置到设定位置 xff0c 需要进行转弯 转弯需要一个横向的加速度来改变速度的方向 这里横向加速度的计算公式 a 61 V2R 又因为R 61 2 sin L1 可得 a 61 2 V2L1 sin L1是现在位
  • 存储过程懂不懂

    存储过程的官方定义是这么说的 xff1a 存储过程 xff08 Stored Procedure xff09 是一组为了完成特定功能的 SQL 语句集 xff0c 经编译后存储在数据库中 用户通过指定存储过程的名字并给出参数 xff08 如
  • PX4多旋翼位置控制

    多悬翼的位置控制由内外环控制 xff0c 外环P控制作用于位置差 xff0c 产生期望速度 xff0c 内环PID作用于速度差 xff0c 产生期望油门 xff0c 然后将油门解算成期望姿态 外环位置控制的三种控制源 1 Manual 手动
  • PX4混控器定义

    PX4混控 把输入指令 分配给电机以及舵机的执行器 信号传递 Actuators id 61 ORB ID actuator controls 0 0号控制组 Orb publish actuators id actuators 0 pub
  • Linux--Ubuntu18.04交叉编译链;多窗口终端;彻底删除不用的虚拟机镜像

    文章目录 建立共享文件夹交叉编译查看是否安装了交叉编译工具安装交叉编译工具链退出root模式 多窗口终端 Terminator彻底删除不用的虚拟机镜像 建立共享文件夹 实现windows系统与虚拟机中的ubuntu之间的文件共享 PC机新建
  • 准确率,召回率,mAP(mean average precision)解释

    准确率Precision 召回率Recall 其实这个翻译相当蛋疼 recall最合理的翻译应该是 查全率 而Precision的最合理的翻译应该是查准率 这样就很容易理解了 xff0c 假设一个班级有10个学生 xff0c 5男5女 你用
  • Android 开发使用 Java 8 中Lambda 表达式功能

    简介 Android开发支持所有 Java 7 语言功能 xff0c 以及一部分 Java 8 语言功能 xff08 具体因平台版本而异 xff09 注意 xff1a 在开发应用时 xff0c 可以选择使用 Java 8 语言功能 您可以将