Lambda表达式

Lambda表达式

lambda表达式是函数式编程的概念

(params) -> expression 表达
(params) -> statement  声明
(params) -> {statements}

Lambda表达式的优点

  • 代码看起来更加的简洁
  • 去掉冗余代码,留下核心代码
  • 避免匿名内部类过多

函数式接口定义:

  • 任何接口,如果只包含一个抽象方法,就是一个函数式接口
  • 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象

例子:

interface Run{
    abstract void run();
}

Lambda表达式简化过程

类的直接实现 -》 静态内部类 -> 局部内部类 -》 匿名内部类 -》lambda表达式

lambda多个传参

sports = (a,b) -> {
    System.out.println(a);
    System.out.println(b);
};

简化完整代码

public class Lambda01 {
    public static void main(String[] args) {
        Run1 run1 = new Run1();
        run1.run();

        //局部内部类
        class Run2 implements Run{

            @Override
            public void run() {
                System.out.println("run2");
            }
        }

        Run2 run2 = new Run2();
        run2.run();

        //匿名内部类,没有类名称,所以需要从接口或者父类获取
        Run run3 = new Run() {
            @Override
            public void run() {
                System.out.println("run3");
            }
        };
        run3.run();

        //lambda表达式
        Run run4 = () -> {
            System.out.println("run4");
        };
        run4.run();

    }
    //静态内部类
    static class Run1 implements Run{
        @Override
        public void run() {
            System.out.println("run1");
        }
    }
}

interface Run{
    abstract void run();
}

lambda完整代码

package com.hdt.kuangshen.lamda;

public class LambdaDemo {
    public static void main(String[] args) {
        Sports sports = null;
//        匿名内部类
        sports = new Sports() {
            @Override
            public void run(int a) {
                System.out.println("我是匿名内部类");
            }
        };

//        lambda简化1,使用在多行输出
        sports = (a) -> {
            System.out.println("lambda第一行");
            System.out.println("lambda第二行");
        };

//        lambda简化2,多行输出
        sports = a -> {
            System.out.println("lambda第一行");
            System.out.println("lambda第二行");
        };

//        lambda简化3
        sports = a -> System.out.println("lambda简化到最简了");

        sports.run(2);
    }
}

interface Sports{
    void run(int a);
}
posted @ 2021-11-07 14:07  HeiDaotu  阅读(22)  评论(0编辑  收藏  举报