【狂神说Java】Lambda表达式

lambda表达式

  • 为什么要使用Lambda表达式
    1. 避免匿名内部类定义过多
    2. 代码看起来简洁
    3. 去掉了无意义代码,只留下核心的逻辑

函数式接口(Functional Interface)的定义

  • 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
public Interface Runnable{
    public abstract void run();
}

class Run implements Runnable{
    System.out.println("Run");
}
  • 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。
Runnable runner = () -> System.out.println("Run");
public class LambdaTest {
    // 3.静态内部类
    static class Like2 implements IntLike {
        @Override
        public void lambda(int a) {
            System.out.println("Lambda表达式"+a);
        }
    }

    public static void main(String[] args) {
        IntLike like = new Like();
        like.lambda(1); //1,2操作后

        like = new Like2();
        like.lambda(2); // 3 操作后


        // 4.局部内部类
        class Like3 implements IntLike {
            @Override
            public void lambda(int a ) {
                System.out.println("Lambda表达式"+a);
            }
        }

        like = new Like3();
        like.lambda(3); // 4 操作后

        // 5.匿名内部类,没有类的名称,必须借助接口或者父类
        // 直接实现接口,没有类名
        like = new IntLike() {
            @Override
            public void lambda(int a) {
                System.out.println("Lambda表达式"+a);
            }
        };
        like.lambda(4);

        //6.用lambda简化
        like = (int a) -> System.out.println("Lambda表达式"+a);
        like.lambda(5);

        // 简化,去掉参数类型和括号
        like = a -> System.out.println("Lambda表达式"+a);
        like.lambda(6);


//
//        // lambda表达式,实例化函数式接口,直接实现接口中的方法
//        IntLike like = () -> System.out.println("Lambda表达式5");
//        like.lambda()
//
//
    new Thread(()-> System.out.println("test")).start();
    }
}

// 1.定义一个函数式接口
interface IntLike {
    void lambda(int a);

}

// 2.实现接口
class Like implements IntLike {

    @Override
    public void lambda(int a) {
        System.out.println("Lambda表达式"+a);
    }
}

lambda应用

例如:Thread中直接实现Runnable接口,带参数

new Thread(() -> System.out.println("test")).start();
posted @ 2021-09-15 17:34  Jie7  阅读(132)  评论(0)    收藏  举报