Lambda表达式也可以称为闭包,Lambda表达式是在Java8新增的一种重要的新特性。
Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
//格式一般如下
(parameters)->expression;//表达式
//或
(parameters)->{statements;};//语句
//eg:多线程中实现Runnable接口的线程创建。
new Thread(()->System.out.println("这就是Lambda表达式")).start();
Lambda表达式可以避免匿名内部类定义过多,简化了编程,使代码变得更加简洁紧凑。
其实质上属于函数式编程的概念。
Lambda表达式创建的对象需要实现一个函数式接口(Functional Interface)
函数式接口是只包含一个方法的接口,比如Java标准库中的java.lang.Runnable和 java.util.Comparator
//函数式接口:Runnable接口
public interface Runnable{
public abstract void run();
}
函数式接口的定义:
- 任何接口,如果只包含一个抽象方法,那么他就是一个函数式接口。
- 对于函数式接口,我们可以通过Lambda表达式来创建该接口的对象。
//代码简化,由一般情况到Lambda表达式
public class LambdaTest {