简介
任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。
作用
使用lambda表达式可以避免匿名内部类定义过多,使得代码看起来更加简洁,去掉了一堆没有意义的代码,只留下了核心逻辑。
发展历程
对于这种一般只用一次的类,为了使得代码更加简洁,经历了以下过程:
- 普通实现类:最原始的方法,定义了抽象接口之后,定义一个接口的实现类,再new一个对象,再调用对象的方法。 
- 静态内部类: 可以把这个接口的实现类定义到需要用到的类的内部,类前面加上static,为静态内部类 
- 局部内部类:可以把这个接口的实现类定义到需要用到的类的方法内部,为局部内部类 
- 匿名内部类:虽然这个接口有实现类,但是这个类没有名字,只能通过接口或者父类来new这个实现类的对象。 java- 1 
 2
 3
 4
 5
 6
 7- >接口 变量 =new 接口(){ 
 接口中的方法实现
 >}
 >//在作为参数时
 >new 接口(){}
- lambda表达式:观察到匿名内部类还有继续简化的空间,比如接口 写了两次,还有一个繁琐的new关键字,lambda做了如下优化。因为函数式接口里面只有一个方法,所以{ }里面直接写的就是那个方法的实现。 - 接口 变量 =()-> { } - 如果只有一行 - return xxx的代码,完全可以用更简单的写法.

