Lambda表达式

Lambda表达式

函数式接口

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

内部类及Lambda表达式实现代码:

package com.lambda;


/**
 * 推导lambda表达式
 */
public class LambdaTest01 {

    //3、静态内部类
    static class Like2 implements ILike {

        @Override
        public void lambda() {
            System.out.println("I like lambda2!!!");
        }
    }

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

        like = new Like2();
        like.lambda();


        //4、局部内部类
        class Like3 implements ILike {

            @Override
            public void lambda() {
                System.out.println("I like lambda3!!!");
            }
        }

        like = new Like3();
        like.lambda();


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


        //6、用lambda简化
        like = () -> {
            System.out.println("I like lambda5!!!");
        };
        like.lambda();

    }
}


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


//2、实现类
class Like implements ILike {

    @Override
    public void lambda() {
        System.out.println("I like lambda!!!");
    }
}

带参数的lambda的实现及简化

package com.lambda;

public class LambdaTest02 {

    //静态内部类
    static class Love implements ILove {
        @Override
        public void love(int a) {
            System.out.println("I Love You -->" + a);
        }
    }

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

        //Lambda
        ILove love = (int a) -> {
            System.out.println("I Love You -->" + a);
        };
        love.love(100);

        //简化1:去掉参数类型
        love = (a) -> {
            System.out.println("I Love You -->" + a);
        };
        love.love(101);

        //简化2:去掉括号
        love = a -> {
            System.out.println("I Love You -->" + a);
        };
        love.love(102);

        //简化3:去掉大括号:注意!输出只有一行的情况下
        love = a -> System.out.println("I Love You -->" + a);

        love.love(103);

    }
}

interface ILove {
    void love(int a);
}

class Love implements ILove {
    @Override
    public void love(int a) {
        System.out.println("I Love You -->" + a);
    }
}
posted @ 2022-08-03 19:05  每年桃花开的时候  阅读(34)  评论(0)    收藏  举报