Lambda表达式(闭包)是Java8引入的最重要的特性之一,允许我们将函数作为方法参数,或者将代码作为数据来处理,使代码变的更加简洁紧凑。
Lambda表达式是一种匿名函数,没有名称,但有参数列表、函数主体和返回类型,可以简洁地表示一个接口的实例。了解什么是函数式接口Functional Interface:只包含一个抽象方法的接口,作用是为Lambda表达式提供目标类型,分为参数和表达式主体,如果只有一个参数,可以省略括号,如果没有参数,则需要括号。如下简单示例:Lambda表达式本质上是函数式接口的实例。任何只包含一个抽象方法的接口,都可以用Lambda表达式实现。Lambda表达式可以访问外部变量,但有一些限制:Java编译器能够根据上下文推断Lambda表达式的参数类型:当Lambda表达式仅仅是调用一个现有方法时,可以用方法引用简化:Lambda表达式最常见的应用场景是与Stream API配合使用:
上述讲解也就体现了Lambda表达式的一些重要特征:
- 函数式编程支持:允许将函数当做参数传递给方法,或者将函数作为返回值,使得Java在函数式编程方面更为灵活,能够更好的处理集合操作、并行计算等任务。
- 方法引用:通过方法引用进一步简化,允许直接引用现有类或对象的方法,而不用编写冗余的代码
- 可并行性:能够更方便地实现并行操作,通过使用Stream API结合Lambda表达式,可以更容易实现并行计算,提高程序性能。