在 JDK 8 支持 Lambda 表达式之前,我只在 C# 和 C++ 等语言中使用过它们的示例。
一旦这个特性被添加到 Java 中,我就开始更加深入地研究它们了。
Lambda 表达式利用多核环境下的并行处理能力,如 Stream API 中对数据的管道操作。
它们是匿名方法(没有名称的方法),用于实现由函数式接口定义的方法。在开始使用 Lambda 表达式之前,了解函数式接口是很重要的。
快速介绍
Lambda 表达式增加了语法元素,增强了 Java 的表达能力。本文将重点介绍你需要了解的基本概念,以便今天就开始将 Lambda 表达式添加到你的代码中。
函数式接口
函数式接口是只包含一个抽象方法的接口。
run()
computeNameMyName
函数式接口
箭头操作符
->
(n) -> n*n
左侧指定表达式所需的参数,如果不需要参数,则也可以为空。
右侧是 Lambda 主体,指定 Lambda 表达式的操作。可以将此操作符视为“成为”。例如,“n 成为 n*n”或“n 成为 n 的平方”。
有了函数式接口和箭头操作符的概念,你可以组合一个简单的 Lambda 表达式:
数值测试
问候语 Lambda
morningGreetingeveningGreetingMyGreeting
在编写 Lambda 表达式时,还可以像这样显式指定表达式中参数的类型:
带类型的 Lambda
块 Lambda 表达式
块 Lambda
块 Lambda
泛型函数式接口
Lambda 表达式不能是通用的。但与 Lambda 表达式关联的函数式接口可以是通用的。可以编写一个通用接口并处理不同的返回类型,如下所示:
通用函数式接口
Lambda 表达式作为参数
Lambda 的一个常见用途是将它们作为参数传递。
它们可以用于任何提供目标类型的代码片段。我发现这很令人兴奋,因为它允许我将可执行代码作为参数传递给方法。
要将 Lambda 表达式作为参数传递,请确保函数式接口类型与所需参数兼容。
Lambda 表达式作为参数
这些概念将为你提供一个良好的基础,以开始使用 Lambda 表达式。查看你的代码并查看你可以增强 Java 表达能力的地方。