Lambda表達式基礎語法:引入個一個新的操作符(稱爲箭頭操作符或者Lambda操作符):"->" 該操作符將表達式拆分爲兩部分: 左側:Lambda表達式的參數列表 右側:Lambda中所需要的執行的操作功能
語法格式一:無參數,無返回值 () -> System.out.println("Hello Lambda!");
語法格式二:有一個參數,無返回值(參數可不加括號) (x) -> System.out.println(x); 或者 x -> System.out.println(x);
語法格式三:有兩個以上的參數,且Lambda體重有多條語句;有兩個以上的參數,且Lambda體重有一條語句,大括號和return都可省略 Comparator<Integer> com = (x, y) -> { System.out.println("函數式接口"); return Integer.compare(x, y); }; Comparator<Integer> com = (x, y) -> Integer.compare(x, y);
語法格式四:Lambda表達式中的參數列表的類型可以不用說明,jvm編譯器會通過上下文進行推斷出數據類型,即“類型推斷”
package lambda; import org.junit.Test; import java.util.Comparator; import java.util.function.Consumer; public class TestLambda2 { @Test public void test1() { Runnable r = () -> System.out.println("Hello Lambda!"); r.run(); } @Test public void test2() { Consumer c = x -> System.out.println(x); c.accept("清風徐來"); } @Test public void test3() { Comparator<Integer> com = (x, y) -> { System.out.println("函數式接口"); return Integer.compare(x, y); }; // Comparator<Integer> com = (x, y) -> Integer.compare(x, y); } @Test public void test4() { Integer num = operation(100, (x) -> x * x); System.out.println(num); } //對一個數進行運算 public Integer operation(Integer num, MyFun mf) { return mf.getValue(num); } }
MyFun的定義參考前一節:https://blog.csdn.net/qq_38358499/article/details/104636487 注意:lambda需要“函數式接口”的支持, 函數式接口:接口中只有一個抽象方法的接口,稱爲函數式接口。可以使用註解修飾:@FunctionalInterface,來檢查是否是函數式接口
Java8新特性之Lambda表達式(二)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.