Java中的多執行緒學習筆記004:Lambda表示式和函式式介面
阿新 • • 發佈:2020-12-01
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); }