lambada表达式介绍
前言
在其他语言中,函数式编程是很常见的,java8中为了支持函数式编程,新增了lambada表达式。lambada表达式其实是匿名内部类和闭包的一种符号表示,至于概念性的问题,大家不必深究,lambada表达式会用就可以了。
1.为何需要lambada表达式
在js中,函数的参数是另一个函数,返回值也是一个函数的情况是根常见的,因此js也是一门典型的函数式语言。而在java8以前的版本中,我们是无法将函数作为参数传递给一个方法的,也无法声明返回值是一个函数的方法,但是这种需求是存在的,java中,匿名内部类实际上就是在一个方法的参数位置声明一个匿名的内部类,这种代码结构的核心代码就几句,但是结构代码却比较长,是比较冗余的,如果用lambada表达式来实现这这种代码结构,是非常简洁的,并且可读性也比较强,所以java8中提供了lambada表达式
2.如何使用lambada表达式
lamba表达式的符号表示为 ->,其基本结构形式为:(param1,param2,param3…)-> { }
如果只有一个参数,可以不加小括号,只有一行执行代码,也可以没有箭头后面的大括号,比如 i ->System.Out.Println(i);
如果没有参数 ,只需要一个小括号即可,比如:()-> System.Out.Println(“hello”);
下面代码示例:
public class LambadaExample {public static void main(String[] args) {//不使用lamba表达式new Thread(new Runnable() {@Overridepublic void run() {System.out.println("hello,I am lambada");}}).start();//使用lambada表达式new Thread(() -> System.out.println("hello,I am lambada")).start();//lambada的执行代码有多行new Thread( () -> {try {TimeUnit.SECONDS.sleep(5);System.out.println("I am also lambada");} catch (InterruptedException e) {e.printStackTrace();}}).start();//有参数的lambada表达式Consumer<Integer> consumer = (i) -> System.out.println(i);consumer.accept(666);}
}
lambada表达式介绍相关推荐
- 2.cocos2dx 3.2中语法的不同之处,lambada表达式的使用和function和bind函数的使用
1 打开建好的T32 Cocos2dx-3.2的一个项目 2 设置Cocos显示窗口的位置是在AppDelegate.cpp中: 3 设置自适应窗口大小的代码是在上面的 ...
- lambada表达式
lambda表达式 //C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作.Lambda的语法形式如下: //[函数对象参数](操作符重载函数参数)mutable或e ...
- Lambada表达式的用法
Lambada表达式是JDK1.8中最重要的新功能之一.使用Lambada表达式可以替代只有一个抽象函数的接口实现,告别匿名内部类.代码看起来更简洁易懂.Lambada表达式同时还提升了对集合.框架的 ...
- Lambada表达式常用案例(技能题)
一:Lambada表达式的结构 1)Lambada表达式的结构我们可以看成三部分 () -> {},箭头左边是参数,右边是执行体,箭头是格式 二:使用案例(List为主的操作) 1)实体对象 @ ...
- JDK1.8之Lambada表达式一
一. lambada表达式简介 我们知道对于Java变量可以赋给其一个值,而如果想将"一块代码(一个完整的方法)"赋给一个Java变量,如下所示,怎么做呢? 你可能认为就是下面的方 ...
- lambada表达式总结
前言 作为jdk1.8的新特性,8的标准库都开始大量使用lambda表达式了,你有什么理由不去学习lambda,这么简洁,这么爽的一种编程方法,不学不觉得可惜吗? lambda即λ,是匿名函数的意思, ...
- Python(十)lambada表达式
一.Lambda 表达式 概念:是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数. ...
- 第十节 Java工具包-Collections 流--lambada表达式
collection为核心的接口,包含了多种不同类型的集合以及多种不同数据结构的实现的类 list set queue都是在collection接口下的所以都有.add()方法 package c ...
- lambada表达式理解
lambada表达式是替换匿名内部类的函数式接口实现类 函数式接口 只有一个抽象方法的接口(可以有默认方法和静态方法),通常带有@FunctionalInterface注解 常用函数式接口 Predi ...
最新文章
- Python爬虫入门(2):爬虫基础了解
- 中国航空航天产业创新发展态势及市场规模分析报告2021-2027年版
- wiki文档书写格式
- pom文件内标签的讲解
- ANN:DNN结构演进History—RNN
- composer安装laravel-u-editor及其使用
- AIO,BIO,NIO:同步阻塞式IO,同步非阻塞IO,异步非阻塞IO
- css书写格式 /* css hacker */
- Chrome 远程调试协议分析与实战
- 剑指Offer_12_矩阵中的路径(参考问题:马踏棋盘)
- 动手学深度学习 v2 PDF版本
- python之js破解qq邮箱登录
- Relay传递基础架构
- 论物理学与技术革命之间的关系
- android 7.0 漏洞利用,谷歌 Android 移动操作系统中的零日漏洞被攻击者利用
- oracle宿舍管理系统实训报告,宿舍管理系统实验报告..doc
- 三菱FX DMUL指令
- 哪些游戏称得上“次时代”? 次时代游戏史
- 该微信用户未开启“公众号安全助手”的消息接收功能,请先开启后再绑定 解决方法
- masm5.0的使用介绍