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

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

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

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

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

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

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

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

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

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

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

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

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

public class tt1 {
    //靜態(tài)內(nèi)部類(lè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) {
        //用外部類(lèi)來(lái)實(shí)現(xiàn)接口,首先需要在主類(lèi)外定義另外一個(gè)類(lèi),之后再在內(nèi)部類(lèi)中創(chuàng)建對(duì)象
        //這樣對(duì)于那些只需要使用一次的接口來(lái)說(shuō)比較的麻煩,而且也會(huì)使整個(gè)代碼變得臃腫,給其他開(kāi)發(fā)人員帶來(lái)閱讀困難
        ILove l1 = new lover1();
        l1.love();
        //使用靜態(tài)內(nèi)部類(lèi)來(lái)實(shí)現(xiàn),由于實(shí)現(xiàn)類(lèi)和main方法位于相同主類(lèi)中,方便了開(kāi)發(fā)人員閱讀,但是實(shí)現(xiàn)過(guò)程還是比較麻煩
        ILove l2 = new lover2();
        l2.love();
    }
}
//定義一個(gè)函數(shù)式接口
interface ILove {
    void love();
}
//外部實(shí)現(xiàn)類(lèi)
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.使用局部?jī)?nèi)部類(lèi)使用

public class tt1 {
    //靜態(tài)內(nèi)部類(lè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) {
        //用外部類(lèi)來(lái)實(shí)現(xiàn)接口,首先需要在主類(lèi)外定義另外一個(gè)類(lèi),之后再在內(nèi)部類(lèi)中創(chuàng)建對(duì)象
        //這樣對(duì)于那些只需要使用一次的接口來(lái)說(shuō)比較的麻煩,而且也會(huì)使整個(gè)代碼變得臃腫,給其他開(kāi)發(fā)人員帶來(lái)閱讀困難
        ILove l1 = new lover1();
        l1.love();
        //使用靜態(tài)內(nèi)部類(lèi)來(lái)實(shí)現(xiàn),由于實(shí)現(xiàn)類(lèi)和main方法位于相同主類(lèi)中,方便了開(kāi)發(fā)人員閱讀,但是實(shí)現(xiàn)過(guò)程還是比較麻煩
        ILove l2 = new lover2();
        l2.love();
        //局部?jī)?nèi)部類(lè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)類(lèi)
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)部類(lèi)實(shí)現(xiàn)接口

public class tt1 {
    //靜態(tài)內(nèi)部類(lè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) {
        //用外部類(lèi)來(lái)實(shí)現(xiàn)接口,首先需要在主類(lèi)外定義另外一個(gè)類(lèi),之后再在內(nèi)部類(lèi)中創(chuàng)建對(duì)象
        //這樣對(duì)于那些只需要使用一次的接口來(lái)說(shuō)比較的麻煩,而且也會(huì)使整個(gè)代碼變得臃腫,給其他開(kāi)發(fā)人員帶來(lái)閱讀困難
        ILove l1 = new lover1();
        l1.love();
        //使用靜態(tài)內(nèi)部類(lèi)來(lái)實(shí)現(xiàn),由于實(shí)現(xiàn)類(lèi)和main方法位于相同主類(lèi)中,方便了開(kāi)發(fā)人員閱讀,但是實(shí)現(xiàn)過(guò)程還是比較麻煩
        ILove l2 = new lover2();
        l2.love();
        //局部?jī)?nèi)部類(lè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)部匿名類(lè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)類(lèi)
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)部類(lè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) {
        //用外部類(lèi)來(lái)實(shí)現(xiàn)接口,首先需要在主類(lèi)外定義另外一個(gè)類(lèi),之后再在內(nèi)部類(lèi)中創(chuàng)建對(duì)象
        //這樣對(duì)于那些只需要使用一次的接口來(lái)說(shuō)比較的麻煩,而且也會(huì)使整個(gè)代碼變得臃腫,給其他開(kāi)發(fā)人員帶來(lái)閱讀困難
        ILove l1 = new lover1();
        l1.love();
        //使用靜態(tài)內(nèi)部類(lèi)來(lái)實(shí)現(xiàn),由于實(shí)現(xiàn)類(lèi)和main方法位于相同主類(lèi)中,方便了開(kāi)發(fā)人員閱讀,但是實(shí)現(xiàn)過(guò)程還是比較麻煩
        ILove l2 = new lover2();
        l2.love();
        //局部?jī)?nèi)部類(lè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)部匿名類(lè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)類(lèi)
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á)式的更加極致的簡(jiǎn)化(針對(duì)有參數(shù)的Lambda表達(dá)書(shū))

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

總結(jié)

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

相關(guān)文章

最新評(píng)論

玛纳斯县| 安顺市| 孙吴县| 威信县| 甘德县| 平南县| 海口市| 醴陵市| 乳山市| 定陶县| 柳河县| 广河县| 兴城市| 绥芬河市| 通化县| 宣恩县| 荥经县| 台北市| 土默特右旗| 江川县| 吴堡县| 娄烦县| 梅河口市| 商都县| 呼伦贝尔市| 诏安县| 常宁市| 安义县| 仁寿县| 邵阳市| 广州市| 阿拉善左旗| 东明县| 积石山| 江门市| 鄂尔多斯市| 贺州市| 南宫市| 封丘县| 深水埗区| 蕉岭县|