java1.8中的常見的函數式接口

什麼是函數式接口?

   就是java類型系統的接口,只包含一個接口的特殊接口,語義化檢測的註解:@FunctionalInterface。

   java1.8的新增的static方法和default方法不影響函數式接口的聲明,需要注意的是,java的所有的對象都繼承自object,也就是意味着函數式接口中重寫tostring方法也不影響函數式接口的聲明。

與lambda表達式的關係:

函數式接口只能包含一個操作方法,lambda表達式只能操作一個方法,lambda的核心就是一個函數式接口的實現。

 

java系統中內置常見的幾種函數式接口:

java1.8中的 java.util.function 包提供了大量的函數式接口:如下:

Predicate 接收參數T對象,返回一個boolean類型結果
Consumer 接收參數T對象,沒有返回值
Function 接收參數T對象,返回R對象
Supplier 不接受任何參數,直接通過get()獲取指定類型的對象
UnaryOperator 接口參數T對象,執行業務處理後,返回更新後的T對象

以上幾個函數式接口其中最後兩個最常用。

代碼舉例:

        //java1.8系統內置的函數式接口,查看源碼可以看出來具體的方法

        //此函數接收一個參數,返回一個布爾類型的值
        Predicate<String> per = (String name) -> {
            return "admin".equals(name)?true:false;
        };

        System.out.println(per.test("admin"));
        // 輸出:true


        //java1.8系統內置的函數式接口,
        //此函數接收一個參數,沒有返回值
        Consumer<String> con = (String name) -> {
            System.out.println("此方法沒有返回值!!!");
        };

        con.accept("此方法沒有返回值!!!!!");
        //系統輸出:此方法沒有返回值!!!!!
        

        //java1.8系統內置的函數式接口,
        //此函數接收兩個對象(T,R),接收一個T對象的參數,返回一個R對象
        Function<String,Integer> fun = (String  gender) -> {
            return "men".equals(gender) ? 1:0;
        };

        System.out.println(fun.apply("men"));
        //輸出 1   


        //java 1.8系統內置的函數式接口。
        //此函數是不接收參數,並有返回值
        Supplier<String> sup = () -> {
            return UUID.randomUUID().toString();
        };

        System.out.println(sup.get());
        //輸出  系統生成的UUID(String類型)


        //java1.8系統內置的函數式接口
        //此函數是接收一個什麼的對象,返回一個什麼類型的對象
        UnaryOperator<String> up = (String img)->{
            img += "【1024*24】";
            return img;
        };

        System.out.println(up.apply("原圖~~"));
        //輸出:原圖~~【1024*24】

        //java1.8系統內置的函數式接口,
        //此函數接收兩個對象,返回一個對象
        BinaryOperator<Integer> bp = (Integer i1,Integer i2) ->{
            return i1 + i2;
        };

        System.out.println(bp.apply(1,2));
        //輸出: 3 

 

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