函數式接口作爲方法的參數案例

使用Lambda作爲參數和返回值

如果拋開實現原理不說,Java中的Lambda表達式可以被當作是匿名內部類的替代品。如果方法的參數是一個函數式接口類型,那麼就可以使用Lambda表達式進行替代。使用Lambda表達式作爲方法參數,其實就是使用函數式接口作爲方法參數。

例如java.lang.Runnable 接口就是一個函數式接口,假設有一個startThread 方法使用該接口作爲參數,那麼就可以使用Lambda進行傳參。這種情況其實和Thread 類的構造方法參數爲Runnable 沒有本質區別。

package com.learn.demo03.LambdaTest;
/*
    例如java.lang.Runnable接口就是一個函數式接口,
    假設有一個startThread方法使用該接口作爲參數,那麼就可以使用Lambda進行傳參。
    這種情況其實和Thread類的構造方法參數爲Runnable沒有本質區別。
 */
public class Demo01Runnable {
    //定義一個方法startThread,方法的參數使用函數式接口Runnable
    public static void startThread(Runnable run){
        //開啓多線程
        new Thread(run).start();
    }

    public static void main(String[] args) {
        //調用startThread方法,方法的參數是一個接口,那麼我們可以傳遞這個接口的匿名內部類
        startThread(new Runnable() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().getName()+"-->"+"線程啓動了");
            }
        });

        //調用startThread方法,方法的參數是一個函數式接口,所以可以傳遞Lambda表達式
        startThread(()->{
            System.out.println(Thread.currentThread().getName()+"-->"+"線程啓動了");
        });

        //優化Lambda表達式
        startThread(()->System.out.println(Thread.currentThread().getName()+"-->"+"線程啓動
了"));
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章