Java 8 新特性 —— Lambda表達式

1. Lambda 是一個匿名函數,可以理解爲一段可以傳遞的代碼

2. Lambda 表達式是對接口抽象方法的實現,() 爲抽象方法的參數列表的

// Consumer 接口有方法 accept(T t),lambda 表達式應用
Consumer<String> con =  (x) -> System.out.println(x);
con.accept("hello lambda!")

3. Lambda 應用

一、Lambda 表達式的基礎語法:Java8中引入了一個新的操作符 “->” 該操作符稱爲箭頭操作符或 Lambda 操作符
箭頭操作符將 Lambda 表達式拆分成兩部分:

左側:Lambda 表達式的參數列表
右側:Lambda 表達式中所需執行的功能, 即 Lambda 體

語法格式一:無參數,無返回值
() -> System.out.println(“Hello Lambda!”);

語法格式二:有一個參數,並且無返回值
(x) -> System.out.println(x)

語法格式三:若只有一個參數,小括號可以省略不寫
x -> System.out.println(x)

語法格式四:有兩個以上的參數,有返回值,並且 Lambda 體中有多條語句
​ Comparator com = (x, y) -> {
​ System.out.println(“函數式接口”);
​ return Integer.compare(x, y);
​ };

語法格式五:若 Lambda 體中只有一條語句, return 和 大括號都可以省略不寫
Comparator com = (x, y) -> Integer.compare(x, y);

語法格式六:Lambda 表達式的參數列表的數據類型可以省略不寫,因爲JVM編譯器通過上下文推斷出,數據類型,即“類型推斷”
(Integer x, Integer y) -> Integer.compare(x, y);

上聯:左右遇一括號省
下聯:左側推斷類型省
橫批:能省則省

二、Lambda 表達式需要“函數式接口”的支持
函數式接口:接口中只有一個抽象方法的接口,稱爲函數式接口。 可以使用註解 @FunctionalInterface 修飾
可以檢查是否是函數式接口

4. Java 8 內置的四大核心函數式接口

// Consumer<T> : 消費型接口
	void accept(T t);

// Supplier<T> : 供給型接口
	T get();

// Function<T, R> : 函數型接口
	R apply(T t);

// Redicate<T> : 斷言型接口
	boolean test(T t);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章