在 Java 中 , lambda 表达式是一个接受参数并返回值的代码块 。 lambda 表达式最初是在 Java 8 中引入的 , 它提高了 Java 的表达能力 。
什么是 Lambda 表达式?
Lambda 表达式是没有任何名称且属于任何类的匿名方法 。 Lambda 表达式是 java.util.function 包的一部分 。 你可以在 Java 中使用 lambda 表达式来实现回调</b或侦听器 。
Lambda 表达式是 Java 中函数式编程的构建块 。 每个 lambda 表达式都在内部映射到一个功能接口 。 编译器在编译源代码时决定它应该从上下文映射到哪个功能接口 。
与 Java 中的其他函数相反 , 你可以定义存在于任何对象范围之外的 lambda 函数 。 因此 , lambda 函数可以在程序中的任何位置调用并传递 。 例如 , 可以将 lambda 函数作为参数传递给另一个函数 。
为什么我们需要 Lambda 表达式?
Java 是一种面向对象和基于类的高级编程语言 。 这意味着 , 除了基本的数据类型之外 , Java 中的一切都是某种对象 。 你不能在 Java 中定义顶级函数; 你不能在类之外定义函数 。 此外 , Java 不允许你从另一个函数返回一个函数或将参数传递给另一个函数 。 这就是 lambda 表达式有帮助的地方 。
Java 中 Lambda 函数的特点
一个 lambda 表达式可以包含零个、一个或多个参数:
你可以显式声明参数的类型 , 也可以从上下文中推断出它 。
如果 lambda 表达式中有多个参数 , 则必须使用逗号分隔它们并将它们包裹在括号内 。
如果没有参数 , 即一组空参数 , 则可以使用空括号来表示 。
如果你在 lambda 表达式中有一个参数 , 则在推断类型时不需要括号 。
lambda 表达式的主体可能不包含语句 , 也可能包含单个或多个语句 。
如果表达式主体中有多个语句 , 则必须使用大括号 。
如果 lambda 表达式的主体中只有一条语句 , 那么使用大括号是没有意义的 。
Java Lambda 表达式的最佳实践
以下是在 Java 中使用 lambda 表达式时应遵循的一些最佳实践:
【javascript|Java :在 Java 中使用 Lambda 表达式】使用标准功能接口是一种很好的做法
你应该保持你的 lambda 表达式简短
避免在函数式接口中过度使用默认方法
避免指定参数类型
使用 lambda 表达式实例化函数式接口
你应该避免重载具有功能接口作为参数的方法
Java 中的 Lambda 表达式总结
在 Java 中 , lambda 表达式表示为对象 , 因此它们需要与特定的对象类型相关联 。 这是目标类型或功能接口 。 如果 lambda 表达式的目标类型和捕获的参数都是可序列化的 , 则 lambda 表达式可以被序列化 。 另一方面 , 强烈不鼓励 lambda 表达式的序列化 , 就像内部类一样 。
lambda 表达式是 Java 8 中最重要的新特性之一 。 它标志着 Java 从面向对象向函数式编程转变的开始 。
- 董明珠“接班人”孟羽童被解雇?停更14天后本尊回应:正在打工中
- Java|不降根本卖不动,16G+256G官方降500,6000mAh坐镇,香味十足
- Java|马斯克劲敌来啦!3236颗卫星!亚马逊选定三款火箭搞“柯伊珀计划”!
- 狭窄、多弯道的空间难以探测?一只来自北理工的机器小鼠SQuRo对此给出否定答案。|仿生电子鼠会做灾后搜救了:载重物爬窄管不在话下
- 远在人类第一次抬头仰望荧惑以前|如果我们加热火星核心,那会怎样?答案扑朔迷离
- 4月27日|倪飞:今年很多友商在硬件上“放水” 中兴Axon 40系列影
- 早在上世纪80年代|强吞推特为哪般,醉翁之意在Web3
- 凤凰网科技讯4月27日消息|中国拿下火星22个地理实体名:获IAU批准 在天问一号着陆点
- 消费者投诉:雅萌美容仪存在质量问题
- 不知道大家还记得上一次给手机Root是在什么时候?而这个问题|一加调整Root保修政策 属于刷机的时代已远去