Lambda表达式的几种实现过程
1.无参数+语句(代码块):适用于匿名内部类中方法无参数的情况
private void threadTest(){
//普通写法
new Thread(new Runnable(){
@Override
public void run(){
...
}
}).start();
//使用lambda表达式写法
new Thread(() -> Log.d(TAG, "This is a lambda Thread")).start();
}
2.有参数+语句:适用于匿名内部类中方法只有一个参数的情况
private void setOnClick(){
//普通写法
findViewById(R.id.button).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Log.d(TAG, "This is a general onClick");
}
});
//使用lambda表达式写法
findViewById(R.id.button).setOnClickListener(v -> Log.d(TAG, "This is a general onClick"));
}
3.有参数+代码块:适用于匿名内部类中方法不止一个参数的情况
private void setOnChecked(){
CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox);
//普通写法
checkBox.setOnCheckedChangeListener(new CompoundButton.onCheckedChangeListener(){
@Override
public void onCheckedChange(CompoundButton buttonView, boolean isChecked){
Log.d(TAG, "This is a general onCheckedChange");
}
});
//使用Lambda表达式写法
checkBox.setOnCheckedChangeListener((buttonView, isChecked) ->{
Log.d(...);
});
}
4.链模式
Observable.from(Arrays.asList(1,2,3,4,5,6))
.filter(new Func1<Integer, Boolean>(){
@Override
public Boolean call(Integer integer){
return integer % 2 == 0;
}
})
.map(new Fun1<Integer, Integer>(){
@Override
public Integer call(Integer integer){
return integer * integer;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<Integer>(){
@Override
public void call(Integer integer){
System.out.println(integer);
}
});
//使用lambda表达式的写法
Observable.from(Arrays.asList(1,2,3,4,5,6))
.filter(integer -> integer % 2 == 0;)
.map(integer -> integer * integer);
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(integer -> Ststem.out.println(integer));
Lambda表达式的几种实现过程的更多相关文章
- C++使用模板、函数指针、接口和lambda表达式这四种方法做回调函数的区别比较
在C++中,两个类之间存在一种关系,某个类需要另外一个类去完成某一个功能,完成了之后需要告知该类结果,这种最普通最常见的需求,往往使用回调函数来解决. 如题,我总结下来有这么四种方式可以完成这项功能, ...
- Python:lambda表达式的两种应用场景
01 lambda表达式 python书写简单,功能强大, 迅速发展成为 AI ,深度学习的主要语言.介绍Python中的lambda表达式,注意到,它只是一个表达式,不是语句啊. lambda的语法 ...
- Lambda表达式的几种使用方式
Lambda 的表达式的编写格式如下: x=> x * 1.5 当中 “ => ” 是 Lambda 表达式的操作符,在左边用作定义一个参数列表,右边可以操作这些参数. 例一, 先把 in ...
- java中使用Lambda表达式的5种语法
1,标准写法 思考下述情况: String[] arr = {"program", "creek", "is", "a" ...
- python lambda表达式的两种用处
1 用处1定义匿名函数 不带参数的: a = ") 带参数的 b = lambda x, y:x * y 2 当函数作为参数时,直接为该函数传参. def func1(m, n): retu ...
- 从匿名方法到 Lambda 表达式的推演过程
Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数. 以上是msdn官网对Lambda 表达式 ...
- 委托,匿名函数和lambda表达式
很早之前就接触到了委托,但是一直对他用的不是太多,主要是本人是菜鸟,能写的比较高级的代码确实不多,但是最近在看MSDN微软的类库的时候,发现了微软的类库好多都用到了委托,于是决定好好的研究研究,加深一 ...
- 「C++11」Lambda 表达式
维基百科上面对于 lambda 的引入是如下描述的: 在标准 C++,特别是当使用 C++ 标准程序库算法函数诸如 sort 和 find.用户经常希望能够在算法函数调用的附近定义一个临时的述部函数( ...
- .NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式
开篇:在上一篇中,我们了解了匿名类.匿名方法与扩展方法等所谓的新语法,这一篇我们继续征程,看看系统预定义委托(Action/Func/Predicate)和超爱的Lambda表达式.为了方便码农们,. ...
随机推荐
- 前端学习(八):CSS
进击のpython ***** 前端学习--CSS 现在的互联网前端分为三层: HTML:超文本标记语言.从语义的角度描述页面结构 CSS:层叠样式表.从审美的角度负责页面样式 JS:Javascri ...
- PHP设计模式之----观察者模式
一.概述 1.观察者模式(Observer),当一个对象的状态发生改变时,依赖他的对象会全部收到通知,并自动更新. 2.场景:一个事件发生后,要执行一连串更新操作.传统的编程方式,就是在事件的代码之后 ...
- random随机数函数
- Skill 脚本演示 ycChangeViaNumber.il
https://www.cnblogs.com/yeungchie/ ycChangeViaNumber.il 使用鼠标滚轮快速修改 Via 的数量. 回到目录
- layui 父页面获取弹窗传递的值 和 父页面传值给子弹窗的方法
1.父页面获取子页面(弹窗)的值: 现在父页面页面加载方法中定义方法,专门用来获取从子页面的值 $(document).ready(function() { //拿到子窗口中传回的数据 functio ...
- Redis 内存压缩原理
Redis 无疑是一个大量消耗内存的数据库,因此 Redis 引入了一些设计巧妙的数据结构进行内存压缩来减轻负担.ziplist.quicklist 以及 intset 是其中最常用最重要的压缩存储结 ...
- yum自建离线仓库
1.步骤 centOS的安装包,完整版最好--everyhing版本 解压缩 将文件夹内Packages文件导入系统 执行命令如下: 1. mv ./Packages/ /mnt/ 2. create ...
- IDEA-Translation最优秀的翻译插件
IDEA最优秀的翻译插件 效果 特性 多翻译引擎 Google翻译 有道翻译 百度翻译 多语言互译 文档翻译 语音朗读 自动选词 自动单词拆分 单词本 使用 申请有道智云翻译服务(可选): 注册有道智 ...
- qt事件过滤器的使用(可以用于控制屏幕背光等)
在嵌入式qt项目中,有时并不需求屏幕一直亮着,需要一段时间不操作时,将屏幕背光关掉,以达到节能的目的: 在qt项目中,可以通过重写事件过滤器来实现屏幕操作的检测,加上定时器的时间控制,可以实现指定时间 ...
- Springboot2.x整合logback slf4j
Springboot项目的pom里引入的parent <parent> <groupId>org.springframework.boot</groupId> &l ...