lambda表达式是Java8引入的新功能。lambda表达式以字面量的形式把少量代码直接写在程序中,从而让 Java 编程更符合函数式风格(Java 实质上是面向对象语言。不过,引入lambda 表达式后,可以更轻易地编写符合函数式风格的代码)。
lambda 表达式的句法是一个参数列表和方法主体,如下所示(a,b为参数列表,大括号内为方法主体):(a, b) -> { /* 方法主体 */ }
这种句法能通过一种十分紧凑的方式表示简单的方法,而且能很大程度上避免使用匿名类。
既可以使用lambda表达式来代替匿名类的使用。使代码变得更加简洁。
注意,并不是所有的接口都可以使用lambda表达式。只有函数式接口才可以使用lambda。
函数式接口有且只有一个抽象方法。可以使用@FunctionalInterface注解来检测该接口是否为函数式接口。
如下举出lambda使用实例:
一,无参实例:
二,有参实例:
三,使用方法引用的lambda表达式
方法引用是通过方法的名字来指向一个方法,其在lambda基础上使语言的构造更加简洁。
方法引用使用一对冒号来表示::
Java 中有4种不同方法的引用:
1.静态方法引用:类名::静态方法名
举出如下实例:
2.特定对象的方法引用:对象::实例方法名
举出如下实例:
3.特定类的任意对象的方法引用:类名::实例方法名
举出如下实例:
这里需要注意的是:
接口方法的参数比引用方法的参数多一个,并且接口方法的第一个参数是调用引用方法的对象。
4.构造器引用:类名::new
举出如下例子:
这里需要注意的是:调用的构造方法要与函数式接口中抽象方法的参数列表保持一致。
最后:
本章仅对java8部分新特性做出简单介绍,仅供参考,详细内容可以参阅java官方api文档。