使用 Lambda 取代 Android 中的匿名类
作者:程序亦非猿 发布时间:2023-11-16 14:01:04
Lambda是第十一个希腊字母,大写Λ,小写λ,额,跑题了…Lambda表达式 是Java8的新特性之一:
Lambda表达式
函数式接口
流API
默认方法
新的Date
Time API
Lambda表达式 取代了匿名类 ,取消了模板,允许用函数式风格编写代码。
由于最近接触了RxJava,遇到了Lambda,立马就喜欢上了~所以就学习了一下.
本文主要介绍一下Lambda在Android中替代匿名类的部分使用场景.
在Android中使用Lambda
gradle-retrolambda
A gradle plugin for getting java lambda support in java 6, 7 and android
在Android中使用我们需要使用这个插件,按照配置配置完就行.
实战使用
由于Lambda 可以取代匿名类,所以我们先来挑几个匿名类练练手.
这里先简单的提及一下Lambda的语法:() -> {}咋一看可能觉得这个什么鬼啊?看不懂啊!
不急,看几个例子先~
设置监听事件
Android中我们设置监听一般这么写:
mFab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
doSomething();
}
});
这么写AS会提示说匿名类new View.OnClickListener()能被Lambda代替:
提示
那么用Lambda可以如何写呢?
mFab.setOnClickListener(v->doSomething());
看到了么?
整个匿名内部类被v->doSomething()给代替了.
是不是非常简单?
Ps: 本例子中的`v`代表onClick传递的参数v,参数不能省略,但是可以随意命名.
实现Runnable
在Android中我们起个线程一般这么写:
new Thread(new Runnable() {
@Override
public void run() {
doSomething();
}
}).start();
而使用Lambda表达式的话可以这么写:
new Thread(() -> doSomething()).start();
另外实例化Runnable成员变量也可以这么写:
Runnable runnable = ()->doSomething();
看完这两个例子是否对Lambda感兴趣了呢?后续我还会继续学习,有兴趣的请继续关注~


猜你喜欢
- spring xml中配置视图如果是如下<property name="defaultViews"><
- 关于滑动冲突在Android开发中,如果是一些简单的布局,都很容易搞定,但是一旦涉及到复杂的页面,特别是为了兼容小屏手机而使用了Scroll
- 前言Google终于发布了一个和SQLite相关的库了。之前一直都是在SQLite、XUtils、greenDao、Realm这些数据库之间
- 在C语言中,函数名可以当做函数指针传递给形参从而实现回调void f1() { printf("f1()\n"); }v
- 最近碰到这么个恶心的问题问题:有个arr文件被放到Module A中引用,现在Module B又依赖了Module A,则在编译过程中会发生
- 帧率(Frame rate)是用于测量显示帧数的量度。所谓的测量单位为每秒显示帧数(Frames per Second,简称:FPS)或“赫
- 一、前言前面我们学习了多态中的转型,那么现在我们开始学习抽象类的概述和使用二、抽象类生活大多事物是具有抽象含义的,比如我说一个生物,你想不到
- 本文实例讲述了C#实现Excel导入sqlite的方法,是非常实用的技巧。分享给大家供大家参考。具体方法如下:首先需要引用system.da
- 一、前言跟很多小伙伴聊天,发现一个严重的问题,很多小伙伴横向发展的貌似很不错,很多技术都能说出一二,但是如果在某个技术上深挖一下就不行了,问
- 前面的文章已经实现相关的布局,本文接着进行相关的功能实现读取系统联系人当点击“选择联系人”按钮后,弹出联系人列表,读取系统联系人分如下几个步
- 在开发过程中,不少有Spring Aop的使用,在面向切面编程时,我们会使用< aop:aspect>;在进行事务管理时,我们会
- 如何通过Java发送HTTP请求,通俗点讲,如何通过Java(模拟浏览器)发送HTTP请求。Java有原生的API可用于发送HTTP请求,即
- 本文实例为大家分享了Unity实现俄罗斯方块游戏的具体代码,供大家参考,具体内容如下一、演示二、实现思路创建每一个方块可移动到的位置点,可以
- 工欲善其事,必先利其器,对于想要深入学习Android源码,必须先掌握Android编译命令.一、引言关于Android Build系统,这
- AndroidStudio使用过程中出现的异常异常信息: Gradle sync failed: Unable to start the d
- 本文实例讲述了Java实现的并发任务处理方法。分享给大家供大家参考,具体如下:public void init() { super.init
- 现象正常情况下修改完代码,运行项目就会立即生效的。但是突然有一天发现运行的还是老的代码,新代码根本没有生效。通过 mvn clean、 in
- 页面:上传文件时的关键词:enctype="multipart/form-data"<%@ page langua
- 一、背景目前的Springboot,当发生了任何修改之后,必须关闭后再启动Application类才能够生效,显得略微麻烦。Springbo
- Android安全加密专题文章索引Android安全加密:对称加密Android安全加密:非对称加密Android安全加密:消息摘要Mess