最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中Lambda表達(dá)式的進(jìn)化之路詳解

 更新時(shí)間:2021年11月03日 10:38:37   作者:Thales_ZeeWay  
本文通過示例大家給大家介紹了Java中Lambda表達(dá)式的進(jìn)化之路,感興趣的的朋友一起看看吧,希望能夠給你帶來幫助

Lambda表達(dá)式的進(jìn)化之路

為什么要使用Lambda表達(dá)式

  • 可以簡潔代碼,提高代碼的可讀性
  • 可以避免匿名內(nèi)部類定義過多導(dǎo)致邏輯紊亂
  • 在原先實(shí)現(xiàn)接口抽象方法的時(shí)候,需要通過定義一個(gè)實(shí)現(xiàn)接口的外部類來實(shí)現(xiàn),后面變?yōu)槎x內(nèi)部靜態(tài)類,然后變?yōu)橛镁植績?nèi)部類實(shí)現(xiàn),再后面變成了定義匿名內(nèi)部類來實(shí)現(xiàn),最后的最后,為了代碼的更加簡潔,推出了Lambda表達(dá)式,最終實(shí)現(xiàn)了用一行代碼完成之前多行代碼的效果

Lambda表達(dá)式的注意點(diǎn)

  • Lambda表達(dá)式實(shí)際上屬于是函數(shù)式編程的概念,所以在使用的時(shí)候要知道是否屬于函數(shù)式編程
  • Lambda表達(dá)式的實(shí)現(xiàn)依賴于接口和父類,所以必須有兩者之一才能實(shí)現(xiàn)Lam表達(dá)式
  • Lambda表達(dá)式實(shí)現(xiàn)的接口中要求只有一個(gè)抽象方法,如果有多個(gè)抽象方法就無法使用Lambda表達(dá)式來編程
  • Lambda表達(dá)式即適用于無參方法,也適用于含參方法
  • Lambda表達(dá)式最早在JDK 8中開始出現(xiàn),所以只有 JDK 8 以后的版本才支持

下面是Lambda表達(dá)式的實(shí)現(xiàn)過程

1.最開始使用的是定義外部實(shí)現(xiàn)類來完成接口

public class tt1 {
    public static void main(String[] args) {
        //用外部類來實(shí)現(xiàn)接口,首先需要在主類外定義另外一個(gè)類,之后再在內(nèi)部類中創(chuàng)建對象
        //這樣對于那些只需要使用一次的接口來說比較的麻煩,而且也會(huì)使整個(gè)代碼變得臃腫,給其他開發(fā)人員帶來閱讀困難
        lover l1 = new lover();
        l1.love();
    }
}
//定義接口
interface ILove {
    void love();
}
//外部實(shí)現(xiàn)類
class lover implements ILove{
    @Override
    public void love() {
        System.out.println("I love you my lover ---> 1");
    }
}

//輸出為:I love you lover ---> 1

2.開始使用靜態(tài)內(nèi)部類來實(shí)現(xiàn)

public class tt1 {
    //靜態(tài)內(nèi)部類
    static class lover2 implements ILove{
        @Override
        public void love() {
            System.out.println("I love you my lover ---> 2");
        }
    }
    public static void main(String[] args) {
        //用外部類來實(shí)現(xiàn)接口,首先需要在主類外定義另外一個(gè)類,之后再在內(nèi)部類中創(chuàng)建對象
        //這樣對于那些只需要使用一次的接口來說比較的麻煩,而且也會(huì)使整個(gè)代碼變得臃腫,給其他開發(fā)人員帶來閱讀困難
        ILove l1 = new lover1();
        l1.love();
        //使用靜態(tài)內(nèi)部類來實(shí)現(xiàn),由于實(shí)現(xiàn)類和main方法位于相同主類中,方便了開發(fā)人員閱讀,但是實(shí)現(xiàn)過程還是比較麻煩
        ILove l2 = new lover2();
        l2.love();
    }
}
//定義一個(gè)函數(shù)式接口
interface ILove {
    void love();
}
//外部實(shí)現(xiàn)類
class lover1 implements ILove{
    @Override
    public void love() {
        System.out.println("I love you my lover ---> 1");
    }
}

//輸出為:I love you my lover ---> 1
// I love you my lover ---> 2

3.使用局部內(nèi)部類使用

public class tt1 {
    //靜態(tài)內(nèi)部類
    static class lover2 implements ILove{
        @Override
        public void love() {
            System.out.println("I love you my lover ---> 2");
        }
    }
    public static void main(String[] args) {
        //用外部類來實(shí)現(xiàn)接口,首先需要在主類外定義另外一個(gè)類,之后再在內(nèi)部類中創(chuàng)建對象
        //這樣對于那些只需要使用一次的接口來說比較的麻煩,而且也會(huì)使整個(gè)代碼變得臃腫,給其他開發(fā)人員帶來閱讀困難
        ILove l1 = new lover1();
        l1.love();
        //使用靜態(tài)內(nèi)部類來實(shí)現(xiàn),由于實(shí)現(xiàn)類和main方法位于相同主類中,方便了開發(fā)人員閱讀,但是實(shí)現(xiàn)過程還是比較麻煩
        ILove l2 = new lover2();
        l2.love();
        //局部內(nèi)部類
        class lover3 implements ILove{
            @Override
            public void love() {
                System.out.println("I love you my lover ---> 3");
            }
        }
        ILove l3 = new lover3();
        l3.love();
    }
}
//定義一個(gè)函數(shù)式接口
interface ILove {
    void love();
}
//外部實(shí)現(xiàn)類
class lover1 implements ILove{
    @Override
    public void love() {
        System.out.println("I love you my lover ---> 1");
    }
}

//輸出為:I love you my lover ---> 1
// I love you my lover ---> 2
// I love you my lover ---> 3

4.使用匿名內(nèi)部類實(shí)現(xiàn)接口

public class tt1 {
    //靜態(tài)內(nèi)部類
    static class lover2 implements ILove{
        @Override
        public void love() {
            System.out.println("I love you my lover ---> 2");
        }
    }
    public static void main(String[] args) {
        //用外部類來實(shí)現(xiàn)接口,首先需要在主類外定義另外一個(gè)類,之后再在內(nèi)部類中創(chuàng)建對象
        //這樣對于那些只需要使用一次的接口來說比較的麻煩,而且也會(huì)使整個(gè)代碼變得臃腫,給其他開發(fā)人員帶來閱讀困難
        ILove l1 = new lover1();
        l1.love();
        //使用靜態(tài)內(nèi)部類來實(shí)現(xiàn),由于實(shí)現(xiàn)類和main方法位于相同主類中,方便了開發(fā)人員閱讀,但是實(shí)現(xiàn)過程還是比較麻煩
        ILove l2 = new lover2();
        l2.love();
        //局部內(nèi)部類
        class lover3 implements ILove{
            @Override
            public void love() {
                System.out.println("I love you my lover ---> 3");
            }
        }
        ILove l3 = new lover3();
        l3.love();
        //使用內(nèi)部匿名類
        ILove l4 = new ILove() {
            @Override
            public void love() {
                System.out.println("I love you my lover ---> 4");
            }
        };
    }
}
//定義一個(gè)函數(shù)式接口
interface ILove {
    void love();
}
//外部實(shí)現(xiàn)類
class lover1 implements ILove{
    @Override
    public void love() {
        System.out.println("I love you my lover ---> 1");
    }
}

//輸出為:I love you my lover ---> 1
// I love you my lover ---> 2
// I love you my lover ---> 3
// I love you my lover ---> 4

5..最后使用Lambda表達(dá)式實(shí)現(xiàn)函數(shù)式接口

public class tt1 {
    //靜態(tài)內(nèi)部類
    static class lover2 implements ILove{
        @Override
        public void love() {
            System.out.println("I love you my lover ---> 2");
        }
    }
    public static void main(String[] args) {
        //用外部類來實(shí)現(xiàn)接口,首先需要在主類外定義另外一個(gè)類,之后再在內(nèi)部類中創(chuàng)建對象
        //這樣對于那些只需要使用一次的接口來說比較的麻煩,而且也會(huì)使整個(gè)代碼變得臃腫,給其他開發(fā)人員帶來閱讀困難
        ILove l1 = new lover1();
        l1.love();
        //使用靜態(tài)內(nèi)部類來實(shí)現(xiàn),由于實(shí)現(xiàn)類和main方法位于相同主類中,方便了開發(fā)人員閱讀,但是實(shí)現(xiàn)過程還是比較麻煩
        ILove l2 = new lover2();
        l2.love();
        //局部內(nèi)部類
        class lover3 implements ILove{
            @Override
            public void love() {
                System.out.println("I love you my lover ---> 3");
            }
        }
        ILove l3 = new lover3();
        l3.love();
        //使用內(nèi)部匿名類
        ILove l4 = new ILove() {
            @Override
            public void love() {
                System.out.println("I love you my lover ---> 4");
            }
        };
        l4.love();
        //使用Lambda表達(dá)式實(shí)現(xiàn)接口
        ILove l5 = () ->{
            System.out.println("I love you my lover ---> 5");
        };
        l5.love();
    }
}
//定義一個(gè)函數(shù)式接口
interface ILove {
    void love();
}
//外部實(shí)現(xiàn)類
class lover1 implements ILove{
    @Override
    public void love() {
        System.out.println("I love you my lover ---> 1");
    }
}

//輸出為:
I love you my lover ---> 1
I love you my lover ---> 2
I love you my lover ---> 3
I love you my lover ---> 4
I love you my lover ---> 5

關(guān)于Lambda表達(dá)式的更加極致的簡化(針對有參數(shù)的Lambda表達(dá)書)

  • 簡化數(shù)據(jù)類型 在Lambda表達(dá)式中可以將參數(shù)的數(shù)據(jù)類型省略,只留下一個(gè)數(shù)據(jù)名稱。比較特殊的是如果有多個(gè)參數(shù),省略的時(shí)候應(yīng)該將所有參數(shù)的數(shù)據(jù)類型都省略,不然就全部不省略,而且需要用括號(hào)將參數(shù)包含在內(nèi)。
  • 省略括號(hào) 參照上一條,只有一個(gè)參數(shù)要求的時(shí)候才可以省略括號(hào)省略花括號(hào)
  • 在Lambda表達(dá)式中,只有當(dāng)輸出語句或者代碼只有一行的時(shí)候可以省略花括號(hào)。假如有多條執(zhí)行代碼,還是需要用花括號(hào)將代碼包含在內(nèi)

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 關(guān)于ReentrantLock原理全面解讀

    關(guān)于ReentrantLock原理全面解讀

    這篇文章主要介紹了關(guān)于ReentrantLock原理全面解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • JAVA實(shí)戰(zhàn)練習(xí)之圖書管理系統(tǒng)實(shí)現(xiàn)流程

    JAVA實(shí)戰(zhàn)練習(xí)之圖書管理系統(tǒng)實(shí)現(xiàn)流程

    隨著網(wǎng)絡(luò)技術(shù)的高速發(fā)展,計(jì)算機(jī)應(yīng)用的普及,利用計(jì)算機(jī)對圖書館的日常工作進(jìn)行管理勢在必行,本篇文章手把手帶你用Java實(shí)現(xiàn)一個(gè)圖書管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-10-10
  • Java實(shí)現(xiàn)控制臺(tái)輸出兩點(diǎn)間距離

    Java實(shí)現(xiàn)控制臺(tái)輸出兩點(diǎn)間距離

    這篇文章主要介紹了Java實(shí)現(xiàn)控制臺(tái)輸出兩點(diǎn)間距離,涉及了部分編程坐標(biāo)的問題,具有一定參考價(jià)值,需要的朋友可以了解下
    2017-09-09
  • SpringBoot無法訪問/static下靜態(tài)資源的解決

    SpringBoot無法訪問/static下靜態(tài)資源的解決

    這篇文章主要介紹了SpringBoot無法訪問/static下靜態(tài)資源的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringMVC使用注解實(shí)現(xiàn)登錄功能

    SpringMVC使用注解實(shí)現(xiàn)登錄功能

    這篇文章主要為大家詳細(xì)介紹了SpringMVC使用注解實(shí)現(xiàn)登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 微服務(wù)Spring?Boot?整合Redis?阻塞隊(duì)列實(shí)現(xiàn)異步秒殺下單思路詳解

    微服務(wù)Spring?Boot?整合Redis?阻塞隊(duì)列實(shí)現(xiàn)異步秒殺下單思路詳解

    這篇文章主要介紹了微服務(wù)Spring?Boot?整合Redis?阻塞隊(duì)列實(shí)現(xiàn)異步秒殺下單,使用阻塞隊(duì)列實(shí)現(xiàn)秒殺的優(yōu)化,采用異步秒殺完成下單的優(yōu)化,本文給大家分享詳細(xì)步驟及實(shí)現(xiàn)思路,需要的朋友可以參考下
    2022-10-10
  • Java多線程并發(fā)執(zhí)行demo代碼實(shí)例

    Java多線程并發(fā)執(zhí)行demo代碼實(shí)例

    這篇文章主要介紹了Java多線程并發(fā)執(zhí)行demo代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • java?-jar/-cp啟動(dòng)添加外部的依賴包方式

    java?-jar/-cp啟動(dòng)添加外部的依賴包方式

    這篇文章主要介紹了java?-jar/-cp啟動(dòng)添加外部的依賴包方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 詳細(xì)聊聊JDK中的反模式接口常量

    詳細(xì)聊聊JDK中的反模式接口常量

    這篇文章主要給大家介紹了關(guān)于JDK中反模式接口常量的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用jdk具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01
  • Java 類型信息詳解和反射機(jī)制介紹

    Java 類型信息詳解和反射機(jī)制介紹

    這篇文章主要介紹了Java 類型信息詳解和反射機(jī)制介紹,需要的朋友可以參考下
    2020-11-11

最新評論

长泰县| 庆城县| 平乐县| 永仁县| 秦安县| 夏邑县| 磐石市| 金昌市| 原阳县| 武胜县| 休宁县| 城步| 西昌市| 新乡市| 黑河市| 咸阳市| 周口市| 田林县| 松潘县| 甘肃省| 巴里| 赤壁市| 清河县| 库车县| 林周县| 洛隆县| 扬中市| 大宁县| 乐陵市| 海宁市| 沧源| 大新县| 秦安县| 漳州市| 武陟县| 来凤县| 高要市| 蓝山县| 高淳县| 广宗县| 冷水江市|