Java 8的一个大亮点是引入Lambda表达式,应用它设计的代码会更加简洁。当开发者在编写Lambda表达式时,也会随之被编译成一个函数式接口。上面这个例子就是应用Lambda语法来代替匿名的外部类,代码不仅简洁,而且还可读。
Lambda 容许把函数作为一个办法的参数(函数作为参数传递进办法中)。
应用 Lambda 表达式能够使代码变的更加简洁紧凑。
lambda 表达式的语法格局如下:
(parameters) -> expression

(parameters) ->{ statements; }

没有应用Lambda的老办法:

button.addActionListener(new ActionListener(){    public void actionPerformed(ActionEvent actionEvent){        System.out.println("Action detected");    }});

应用Lambda:

button.addActionListener( actionEvent -> {     System.out.println("Action detected");});

让咱们来看一个更显著的例子。
不采纳Lambda的老办法:

Runnable runnable1=new Runnable(){@Overridepublic void run(){    System.out.println("Running without Lambda");    }};

应用Lambda:

Runnable runnable2=()->System.out.println("Running from Lambda");

正如所看到的,应用Lambda表达式不仅让代码变的简略,并且可读,最重要的是代码量也随之缩小很多。然而,在某种程度上,这些性能在Scala等这些JVM语言里曾经被宽泛应用。
并不奇怪,Scala社区是难以置信的,因为许多Java 8里的内容看起来就像是从Scala里搬过去的。在某种程度上,Java 8的语法要比Scala的更具体但不是很清晰,但这并不能阐明什么,如果能够,它可能会像Scala那样构建Lambda表达式。
一方面,如果Java持续围绕Lambda来倒退和实现Scala都曾经实现的性能,那么可能就不须要Scala了。另一方面,如果它只提供一些外围的性能,例如帮忙匿名外部类,那么Scala和其余语言将会持续茁壮成长,并且有可能会凌驾于Java之上。其实这才是最好的后果,有竞争才有提高,其它语言持续倒退和成长,并且无需放心是否会过期。