文档章节

Lambda在Android中的应用

走世界
 走世界
发布于 2017/09/01 16:12
字数 536
阅读 4
收藏 0

Lambda是java8推出的新特性,这篇文章主要是针对Android来进行基本的应用。

1. 目的:为了美观 看着符合逻辑 书写方便。

 

2. 环境配置:因为Android不支持java8,所以我们采用RetroLambda库兼容java8以前的版本

 

 

库的地址在

 

https://github.com/evant/gradle-retrolambda

AS中配置方法:

首先下载Java8,把语言等级设置为Java8

工程配置文件build.gradle下

buildscript {
  repositories {
     mavenCentral()
  }

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

// Required because retrolambda is on maven central
repositories {
  mavenCentral()
}

app项目配置文件build.gradle下:

apply plugin: 'com.android.application' //or apply plugin: 'java'
apply plugin: 'me.tatarka.retrolambda'

3.使用到的语法:

**"->"关键符号 **

以前我们要是Android设置一个Button的监听,可以用这种匿名内部类的方式

图片

我们可以改写成这样

这里写图片描述

也许你能感受到Lambda在这里的作用 就是替代匿名内部类。同样也会有一个疑问。为什么{}中的方法 恰好是onClick方法。 要是接口中有多个方法怎么办。我尝试了一下

建立了一个多方法的接口MutiMethod

这里写图片描述

在内部建立了一个Activity内部类,为了设置接口。

这里写图片描述

报错了,找不到抽象方法,一对多这种情况是不允许的,lambda这样只能用于单方法的接口。

另外,另一个小实验,在Acitivty onCreate方法中,直接用lambda表达式,我们本来的目的是想新建一个匿名类,但是这里的v代表谁,又对应着哪个接口,我们不曾得知。所以lambda表达式另一个关键点是必须有上下文。  根据上下文需要的类型得出。

这里写图片描述

然后说下其他基本用法

无参数无返回值

v->{
Log.e("TAG".v+"");
}
v输出的就是这个匿名类对象

有参数无返回值

(x,y)->{
Log.e("TAG",x+y+"");
}

有参数有返回值

(x,y)->{
return x+y;
}

 

 

注 :单行可以省略{},有返回值的时候不要加;结尾。无返回值加;

 

 

Lambda常见使用 主要是配合Rxjava进行流式的操作,我以后Rxjava的文章再提Lambda.

© 著作权归作者所有

走世界
粉丝 7
博文 96
码字总数 91434
作品 0
和平
程序员
私信 提问
Android 开发者应该知道的 Kotlin

Android开发者在语言限制方面面临着一个困境。众所周知,目前的Android开发只支持Java 6(语言本身从Java 7开始进行了一些改进),因此我们每天只能使用一种古老的语言来进行开发,这极大地降...

oschina
2016/01/09
6.9K
24
一份关于 Java、Kotlin 与 Android 的学习笔记

JavaKotlinAndroidLearn 这是一份关于 Java 、Kotlin 、Android 的学习笔记,既包含对基础知识点的介绍,也包含对一些重要知识点的源码解析,笔记的大纲如下所示: Java 重拾Java(0)-基础知...

叶应是叶
2018/08/08
0
0
Android Studio中如何支持使用Lambda表达式

Java8引入了lambda表达式,Lambda 表达式”(lambda expression)是一个匿名函数,本质上就是可以传递给其他函数的一小段代码。 下面来看一下如何让自己的项目支持使用lambda表达式,以达到简化...

懂音乐码虫
2018/04/20
0
0
让Android studio支持java8

一:只需要支持Lambda表达式 在app/build.gradle下添加 然后就可以使用Lambda表达式了,比如 可以简化成 二:Java 8和Jack编译 参考Android官网 注意: 需要使用Android N 也就是API24,以下...

2tman
2017/02/06
34
0
如何看待 Kotlin 成为 Android 官方支持开发语言?

在刚刚结束的谷歌 I/O 2017 开发者大会上,官方宣布将支持 Kotlin 作为 Android 开发的 First-Class 语言。一石激起千层浪,消息一出,立即引发了国内外相关从业者对此事件的广泛关注和热烈讨...

局长
2017/05/23
4.3K
54

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周五乱弹 ——不知道假装开心,装的像么

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :天黑了 你很忧愁, 你说世界上, 找不到四块五的妞, 行走在凌晨两点的马路上, 你疲倦地拿着半盒黄鹤楼。#今日歌曲推荐# 《四块...

小小编辑
今天
2.3K
18
64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
昨天
69
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
昨天
34
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
昨天
143
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
昨天
32
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部