使用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()+"-->"+"線程啓動
了"));
}
}