1. 程式人生 > 實用技巧 >Java中的多執行緒學習筆記004:Lambda表示式和函式式介面

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);
}