Lambda表达式

什么是Lambda表达式

  • Lambda是希腊字母表中第十一位字母的英语表达
  • 在JDK8中引入,主要为了解决匿名内部类定义过多的问题,使代码看起来更加简洁
  • 实质是属于函数式编程的概念

Lambda表达式的应用

  • Lambda用来为函数式接口创建对象,那么什么是函数式子接口呢,

对于任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。例如Runnable类就是一个函数式接口,因此lambda被广泛用于线程程序的编写中。

public interface Runnable {
    public abstract void run();
}

Lambda表达式的推导过程

  1. 外部类
  2. 静态内部类
  3. 局部内部类
  4. 匿名内部类
  5. 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");
    }
}
posted @ 2020-10-16 16:18  提笔书几行  阅读(128)  评论(0编辑  收藏  举报