日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Lambda表達式簡介

Lambda表達式是JAVA 1.8才開始有的重要功能,使用Lambda表達式可以替代匿名內部類,代碼簡潔易懂,提升工作效率。上代碼:

玩轉Java8 lambda表達式&函數式接口一

使用內部類和使用lambda實現代碼量對比


函數式接口簡介

有且只有一個抽象方法(可以包含default或static方法,但Object類除外)的接口是函數式接口。@FunctionlInterface就是用來指定某個接口必須是函數式接口。@FunctionalInterface不是必須的,只是告訴編譯器檢查這個接口,保證該接口只能包含一個抽象方法,否則就會編譯出錯。@FunctionalInterface主要是幫助程序員避免一些低級錯誤,比如多個抽象方法。


Java8 之前的函數式接口

java.util.Comparator //排序接口

java.lang.Runnable //線程無返回值接口

java.util.concurrent.Callable<V> //線程有返回值接口

java.lang.reflect.InvocationHandler //動態代理接口

等等......


常用的函數式接口

Java1.8函數式接口都在rt.jar的java.util.function包中,以下是經常用到的函數式接口(一定要熟記,其他的函數式接口都是在這些函數式接口上的擴展

):

名稱

唯一抽象方法

備注

Consumer< T >

void accept(T t);

接收一個參數,無返回值,即數據消費接口

Predicate< T >

boolean test(T t);

接收一個參數,返回布爾值,即數據判斷接口

Supplier< T >

T get();

無參數,有返回值,即數據獲取接口

Function< T, R >

R Apply(T t);

接收T類型參數,返回R類型結果,即數據映射接口(一般輸入和輸出是不同類型的)

 

BiConsumer<T, U>

void accept(T t, U u);

接收兩個輸入,無返回值,數據消費接口

UnaryOperator<T> extends Function<T, T>

 

T accept(T t);

接收一個參數,有返回值,輸入和輸出是相同類型,即數據映射接口

BiFunction<T, U, R>

 

R apply(T t, U u);

接收2個輸入,有返回值,輸入和輸出是不同類型,即數據映射接口

BinaryOperator<T> extends BiFunction<T,T,T>

 

T apply(T t, T u);

接收2個輸入,有返回值,輸入和輸出是相同類型,即數據映射接口


自定義函數式接口

通過上面的學習我們已經知道函數式接口的定義和分類,接下來我們實戰自定義函數式接口 。廢話不多說,代碼走起來。

定義一個無參無返回值的函數式接口

 

玩轉Java8 lambda表達式&函數式接口一

代碼示例1

定義包含default、static方法的無參有返回值的函數式接口

 

玩轉Java8 lambda表達式&函數式接口一

代碼示例2


定義有一個參數,無返回值的函數式接口

 

玩轉Java8 lambda表達式&函數式接口一

代碼示例3


自定義函數式接口測試

@Test
public void testMyFuncationInterface() {
    // 1.無參無返回值
    IBossService boss = () -> System.out.println(" invoke m3");
    boss.m3();

    // 2.無參有返回值
    IBossService3<String> boss3 = () -> "m3";
    boss3.m3();

    // 3.有參無返回值
    IBossService2<String> boss2 = e -> System.out.println("param:" + e);
    boss2.m3("lambda");

    // 4.有參有返回值
    IBossService4<String, Integer> boss4 = e -> 1;
    boss4.m3("lambda");


}


@FunctionalInterface
interface IBossService {
    static int m2() {
        return 2;
    }

    default void m1() {
        System.out.println("m1");
    }

    void m3();
}

@FunctionalInterface
interface IBossService3<R> {
    static int m2() {
        return 2;
    }

    default void m1() {
        System.out.println("m1");
    }

    R m3();
}

@FunctionalInterface
interface IBossService2<E> {
    static int m2() {
        return 2;
    }

    default void m1() {
        System.out.println("m1");
    }

    void m3(E e);
}

@FunctionalInterface
interface IBossService4<T, R> {
    static int m2() {
        return 2;
    }

    default void m1() {
        System.out.println("m1");
    }

    R m3(T t);
}

分享到:
標簽:Java8
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定