Java中的多线程学习笔记004:Lambda表达式和函数式接口

https://space.bilibili.com/95256449/channel/detail?cid=146244

Lambda表达式和函数式接口

Functional Interface(函数式接口):
1、任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。

public interface Runnable{
	public abstract void run();
}

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

函数式接口简化过程

package com.stark.study001;

public class TestLambda001 {

    //3、静态内部类
    static class Like2 implements ILike {
        @Override
        public void lambda() {
            System.out.println("I like lambda002.");
        }
    }

    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 lambda003.");
            }
        }
        like = new Like3();
        like.lambda();

        //5、匿名内部类,没有类的名称,必须借助接口或者父类,必须借助接口或者父类
        like = new ILike() {
            @Override
            public void lambda() {
                System.out.println("I like lambda004.");
            }
        };
        like.lambda();

        //6、用lambda表达式简化
        like = () -> {
            System.out.println("I like lambda005.");
        };
        like.lambda();

    }
}

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

//2、实现接口
class Like implements ILike {
    @Override
    public void lambda() {
        System.out.println("I like lambda001.");
    }
}

lambda表达式传参和简化

package com.stark.study001;

/**
 * 总结:
 * lambda表达式只能有一行代码的情况下才能简化成一行,如果有多行,那么就要用花括号包裹起来。
 * 且前提是接口为函数式接口
 * 多个参数也可以去掉参数类型,但是必须加上括号
 * **/
public class TestLambda002 {
    public static void main(String[] args) {
        //2、lambda表达式简化并传参
        ILove love = (int a) -> {
            System.out.println("I love you-->" + a);
        };
        love.love(520);

        //3、简化一:参数类型
        love = (a) -> {
            System.out.println("I love you-->" + a);
        };
        love.love(521);

        //4、简化二:去掉括号
        love = a -> {
            System.out.println("I love you-->" + a);
        };
        love.love(522);

        //5、简化三:去掉花括号,因为只有一行代码,如果有多行代码,不能简化花括号。
        love = a -> System.out.println("I love you-->" + a);
        love.love(523);
    }
}

//1、定义一个函数式接口
interface ILove {
    void love(int a);
    //函数式接口只能包含一个函数
//    void love2(int a);
}

posted @ 2020-12-01 19:27  Stark0x01  阅读(235)  评论(0)    收藏  举报