本期教程将介绍 Java 8 新增的 Lambda 表达式,包括 Lambda 表达式的常见用法以及方法引用的用法,并对 Lambda 表达式的原理进行分析,最后对 Lambda 表达式的优缺点进行一个总结。
概述
Java 8 引入的 Lambda 表达式的主要作用就是简化部分匿名内部类的写法。
能够使用 Lambda 表达式的一个重要依据是必须有相应的函数接口。所谓函数接口,是指内部有且仅有一个抽象方法的接口。
Lambda 表达式的另一个依据是类型推断机制。在上下文信息足够的情况下,编译器可以推断出参数表的类型,而不需要显式指名。
常见用法
2.1 无参函数的简写
无参函数就是没有参数的函数,例如 Runnable 接口的 run() 方法,其定义如下:
@FunctionalInterfacepublic interface Runnable { public abstract void run();}
在 Java 7 及之前版本,我们一般可以这样使用:
new Thread(new Runnable() { @Override public void run() { System.out.println("Hello"); System.out.println("Jimmy"); }}).start();
从 Java 8 开始,无参函数的匿名内部类可以简写成如下方式:
() -> { 执行语句}
这样接口名和函数名就可以省掉了。那么,上