Lambda表达式
什么是Lambda表达式
- Lambda是希腊字母表中第十一位字母的英语表达
- 在JDK8中引入,主要为了解决匿名内部类定义过多的问题,使代码看起来更加简洁
- 实质是属于函数式编程的概念
Lambda表达式的应用
- Lambda用来为函数式接口创建对象,那么什么是函数式子接口呢,
对于任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。例如Runnable类就是一个函数式接口,因此lambda被广泛用于线程程序的编写中。
public interface Runnable {
public abstract void run();
}
Lambda表达式的推导过程
- 外部类
- 静态内部类
- 局部内部类
- 匿名内部类
- lambda表达式(省去了匿名内部类的new对象和函数名)
package MultiProcess;
//lambda表达式推导过程
public class TestLambda {
//2、静态内部类
static class Like2 implements ILike{
@Override
public void lambda() {
System.out.println("test lambda2");
}
}
public static void main(String[] args) {
ILike obj1 = new Like();
obj1.lambda();
ILike obj2 = new Like2();
obj2.lambda();
//3、局部内部类
class Like3 implements ILike{
@Override
public void lambda() {
System.out.println("test lambda3");
}
}
ILike obj3 = new Like3();
obj3.lambda();
//4、匿名内部类,没有类的名称,必须借助接口或者父类
ILike obj4 = new ILike() {
@Override
public void lambda() {
System.out.println("test lambda4");
}
};
obj4.lambda();
//5、用lambda简化
ILike obj5 = ()->{System.out.println("test lambda5");};
obj5.lambda();
}
}
//定于一个函数式接口
interface ILike{
void lambda();
}
//1、实现外部类
class Like implements ILike{
@Override
public void lambda() {
System.out.println("test lambda1");
}
}