Lambda基礎語法

Lambda表達式的基本語法

java8中引入一個新的操作符“->”,該操作符稱爲箭頭操作符或Lambda操作符。
操作符將Lambda表達式拆分爲左右兩部分:
左側:Lambda表達式的參數列表
右側:Lambda表達式中所需執行的功能,稱爲Lambda體

語法格式一:無參數,無返回值

() -> System.out.println("Hello e路縱橫開發團隊");

@Test
    public void test1(){

        int num = 0;
        //匿名內部類
        Runnable r = new Runnable() {
            @Override
            public void run() {
                System.out.println("Hello World!" + num);//在匿名內部類中應用了同級別的變量時,在jdk1.7以前,變量必須申明爲final,在jdk1.8中,默認加上final
            }
        };
        r.run();

        System.out.println("---------------------------------------");

        //Lambda表達式
        Runnable r1 = () -> System.out.println("Hello e路縱橫開發團隊" + num);
        r1.run();
    }

語法格式二:有一個參數,無返回值

(x) -> System.out.prinrln(x);

@Test
    public void test2(){
        Consumer<String> consumer = (x) -> System.out.println(x);
        consumer.accept("e路縱橫");
    }

語法格式三:若只有一個參數,小括號可以省略不寫

x -> System.out.println(x);

@Test
    public void test3(){
        Consumer<String> consumer = x -> System.out.println(x);
        consumer.accept("e路縱橫");
    }

語法格式四:有兩個以上的參數,有返回值,並且Lambda體中有多條語句

Comparator<Integer> comparator = (x, y) -> {
System.out.println("函數式接口");
return Integer.compare(x, y);
}

@Test
    public void test4(){
        Comparator<Integer> comparator = (x, y) -> {
            System.out.println("函數式接口");
            return Integer.compare(x, y);
        };
    }

語法格式五:若Lambda體中只有一條語句,return和大括號都可以省略不寫

Comparator<Integer> comparator = (x, y) -> Integer.compare(x, y);

@Test
    public void test5(){
        Comparator<Integer> comparator = (x, y) -> Integer.compare(x, y);
    }

語法格式六:Lambda表達式的參數列表的數據類型可以省略不寫,因爲JVM編譯器可以通過上下文推斷出數據類型,即“類型推斷”。

(Integer x, Integer y) -> Integer.compare(x, y); 其中Integer可以省略不寫

Lambda表達式需要“函數式接口”的支持

函數式接口:接口中只有一個抽象方法的接口,稱爲函數式接口。可以使用註解@FunctionInterface修飾,可以檢查接口是否是函數式接口

@FunctionalInterface
public interface MyFun<T> {

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