Lambda表达式

Lambda表达式:

避免匿名内部类定义过多

可以使代码看起来很简介

去掉了一推没有意义的代码,只留下核心的逻辑

其实质属于函数式编程概念

new Thread(()->System.out.println("多线程的学习......")).start();

函数式接口的定义:

任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口

对于函数式接口,我们可以通过lambda表达式来创建该接口的对象

Lambda表达式的推演:

没有参数:

package com.wzz.A03多线程.TestThread8;

/*
 *推导Lambda表达式
 */
public class TestLambda {
    //3.静态内部类
    static class Like2 implements ILike{
        @Override
        public void lambda() {
            System.out.println("i like lambda2");
        }
    }

    public static void main(String[] args) {
        ILike iLike = new Like();
        iLike.lambda();

        ILike iLike2 = new Like2();
        iLike2.lambda();

        //4.局部内部类
        class Like3 implements ILike{
            @Override
            public void lambda() {
                System.out.println("i like lambda3");
            }
        }

        ILike iLike3 = new Like3();
        iLike3.lambda();

        //5.匿名内部类
        ILike iLike4 = new ILike() {
            @Override
            public void lambda() {
                System.out.println("i like lambda4");
            }
        };
        iLike4.lambda();

        //6.lambda简化
        ILike iLike5 = () ->{
            System.out.println("i like lambda5");
        };
        iLike5.lambda();
    }
}

//1.定义一个函数式接口
interface ILike{
    void lambda();
}

//2.实现外部类
class Like implements ILike{
    @Override
    public void lambda() {
        System.out.println("i like lambda");
    }
}

有参数:

package com.wzz.A03多线程.TestThread8;

/*
 *推导Lambda表达式
 */
public class TestLambda2 {
    //3.静态内部类
    static class Love2 implements ILove{
        @Override
        public void love(int a,int b) {
            System.out.println(a+"love"+b);
        }
    }

    public static void main(String[] args) {
        ILove iLove  = new Love();
        iLove.love(1,1);

        ILove iLove2  = new Love2();
        iLove2.love(2,2);

        //4.局部内部类
        class Love3 implements ILove{
            @Override
            public void love(int a,int b) {
                System.out.println(a+"love"+b);
            }
        }

        ILove iLove3  = new Love3();
        iLove3.love(3,3);

        //5.匿名内部类
        ILove iLove4 = new ILove() {
            @Override
            public void love(int a,int b) {
                System.out.println(a+"love"+b);
            }
        };
        iLove4.love(4,4);

        //6.lambda简化
        ILove iLove5 = (int a,int b) ->{
            System.out.println(a+"love"+b);
        };
        iLove5.love(5,5);

        //6.简化1.参数类型: 参数类型必需同时去掉
        ILove iLove6 = (a,b) ->{
            System.out.println(a+"love"+b);
        };
        iLove6.love(6,6);

        //6.简化2.去掉括号:不能去掉括号是因为参数有多个
        ILove iLove7 = (a,b) ->{
            System.out.println(a+"love"+b);
        };
        iLove7.love(7,7);

        //6.简化2.去掉花括号:能去掉是因为花括号中代码只有一行
        ILove iLove8 = (a,b) ->System.out.println(a+"love"+b);
        iLove8.love(8,8);
    }
}

//1.定义一个函数式接口
interface ILove{
    void love(int a,int b);
}

//2.实现外部类
class Love implements ILove{
    @Override
    public void love(int a,int b) {
        System.out.println(a+"love"+b);
    }
}
posted @ 2021-10-11 17:27  隔岸稻花香  阅读(23)  评论(0编辑  收藏  举报