Lambda表达式是Java SE 8中最重要的新特性。

长期以来,Lambda表达式一直被认为是Java中缺少的特性。

Lambda表达式语法

(参数列表) -> 语句

或者

(参数列表) -> {
    语句组
}

Lambda表达式简化代码的例子

Lambda表达式也称为闭包(closures),它可以使某些Java代码结构更简短,更易于阅读,尤其是在使用内部类时。

closure
美 ['kloʊʒər]
英 ['kləʊʒə(r)]
n.关闭;倒闭;(路或桥的)暂时封闭
v.使结束
网络闭包;闭合;封闭性

考虑下面的代码片段,它使用java.lang.Runnable接口定义一个匿名内部类同时实例化该类:

Runnable runnable = new Runnable() {
    @Override
    public void run() {
        System.out.println("Running...");
    }
}

使用Lambda表达式可将上述代码替换为如下形式:

Runnable runnable = () -> System.out.println("Running...");

换句话说,如果需要将Runnable传递给java.util.concurrent.Executor,可以写成下面这样:

executor.execute(new Runnable() {
    @Override 
    public void run() {
        System.out.println("Running...");
    }
});

使用如下的Lambda表达式有相同的效果:

executor.execute(() -> System.out.println("Running..."));

这样的代码简短、亲切,同时更清晰,也更具表现力。