十一、Lambda表达式

1. Lambda(λ)表达式:

  • λ希腊字母表中排序第十一位的字母,英语名称为Lambda
  • 避免匿名内部类定义过多
  • 其实质属于函数式编程的概念

2. 为什么要使用Lambda表达式?

  • 避免匿名内部类定义过多
  • 可以让你的代码看起来很简洁
  • 去掉了一堆没有意义的代码,只留下核心的逻辑。

3. 也许你会说,我看了Lambda表达式,不但不觉得简洁,反而觉得更乱,看不懂了。那是因为我们还没有习惯,用的多了,看习惯了,就好了。

4. 理解Functional lnterface(函数式接口)是学习Java8 lambda表达式的关键所在。函数式接口的定义:

  • 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。如: Runnable接口
  • 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。
//1.定义 函数式接口
interface IService{
    void test(String msg);
}

//2.定义 实现类
class ServiceImp1 implements IService{
    @Override
    public void test(String msg) {
        System.out.println("this is "+msg);
    }
}

public class TestLambda {

    static class ServiceImp2 implements IService{
        //3.2静态内部类方式
        @Override
        public void test(String msg) {
            System.out.println("this is "+msg);
        }
    }

    public static void main(String[] args) {

        //3.1 基本方式
        IService service = new ServiceImp1();
        service.test("basic");

        //3.2静态内部类方式
        service = new ServiceImp2();
        service.test("static");


        //3.3局部内部类方式
        class ServiceImp3 implements IService{
            @Override
            public void test(String msg) {
                System.out.println("this is "+msg);
            }
        }
        service = new ServiceImp3();
        service.test("part");


        //3.4匿名内部类方式
        service =  new IService(){
            @Override
            public void test(String msg) {
                System.out.println("this is "+msg);
            }
        };
        service.test("anonymous");

        //3.5 Lambda方式
        service = (msg)->{System.out.println("this is "+msg);};

        //简化1:去参数括号
        service = msg->{System.out.println("this is "+msg);};

        //简化2:去方法体括号
        service = msg->System.out.println("this is "+msg);
        service.test("lambda");
    }
}

 

posted @ 2022-05-14 19:36  Epiphany8Z  阅读(32)  评论(0编辑  收藏  举报