国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java8的Lambda 表達(dá)式

teren / 591人閱讀

摘要:的表達(dá)式的一個大亮點是引入表達(dá)式,使用它設(shè)計的代碼會更加簡潔。表達(dá)式其實是一個匿名函數(shù)。匿名方法的寫法定義一個接口,接口的方法是判斷是否滿足的條件。

Java8的Lambda 表達(dá)式

Java 8的一個大亮點是引入Lambda表達(dá)式,使用它設(shè)計的代碼會更加簡潔。Lambda 表達(dá)式其實是一個匿名函數(shù)。

一、演變過程

1.普通方法的寫法

定義一個Hero對象,存儲英雄的屬性

public class Hero implements Comparable {
    /**
     * 英雄名
     */
    public String name;
    /**
     * 血量
     */
    public float hp;
    /**
     * 傷害
     */
    public int damage.......

篩選出,滿足下面條件的英雄類

private static void filter(List heros) {
    for (Hero hero : heros) {
        if (hero.hp > 100 && hero.damage < 50)
            System.out.print(hero);
    }
}

這種方式,如果篩選條件改變,需要重新再寫一個方法,稍微麻煩一點。

2.匿名方法的寫法

定義一個接口,接口的方法是判斷是否滿足的條件。

public interface IHeroChecker {
    /**
     * 判斷Hero是否滿足條件
     * @param h
     * @return
     */
    public boolean checker(Hero h);
}

寫一個過濾方法,判斷條件是調(diào)用IHeroChecker對象的checker方法,其實就是這個方法中要使用另一個類的方法。

private static void filter(List heros,IHeroChecker checker) {
    for (Hero hero : heros) {
        if(checker.checker(hero))
        System.out.print(hero);
    }
}

//匿名類對實現(xiàn)此判斷方法
IHeroChecker checker = new IHeroChecker() {
    @Override
    public boolean checker(Hero h) {
        return (h.hp>100 && h.damage<50);
    }
};
filter(heros,checker);

使用匿名類實現(xiàn)這個方法,再調(diào)用filter方法

3.Lambda 表達(dá)式的寫法

使用Lambda 表達(dá)式就不用寫匿名類了,將匿名類演變成Lambda表達(dá)式;

1.把匿名類外面的殼子去掉,只保留方法參數(shù)和方法體;

2.參數(shù)和方法體之間加上符號 ->

3.把return和{}去掉

4.只有一個參數(shù)時可以去掉();

//匿名類對實現(xiàn)此判斷方法
IHeroChecker checker = new IHeroChecker() {
    @Override
    public boolean checker(Hero h) {
        return (h.hp>100 && h.damage<50);
    }
};

 filter(heros,h->h.hp>100 && h.damage<50);

二、與匿名方法關(guān)系

與匿名類概念相比較,Lambda 其實就是匿名方法,這是一種把方法作為參數(shù)進(jìn)行傳遞的編程思想。java執(zhí)行時,還是會將他變成匿名類的.

三、Lambda表達(dá)式弊端

1.可讀性差,匿名類代碼結(jié)構(gòu)比較起來,Lambda表達(dá)式一旦變得比較長,不好理解;

2.不便于調(diào)試,很難在Lambda表達(dá)式中增加調(diào)試信息;

3.版本支持,在JDK8以后才有,之前的版本不支持。

四、Lambda表達(dá)式方法的引用

前面我們講了,Lambda表達(dá)式其實就是一個方法,把{}和return去掉了而已,那我們?nèi)绻鞋F(xiàn)成的方法,用已有的方法代替它該怎么做

1.引用靜態(tài)方法

已經(jīng)有了靜態(tài)方法

public static boolean checker(Hero h) {
    return h.hp>100 && h.damage<50;
}

在Lambda表達(dá)式中使用

filter(heros, h -> LambdaTest.checker(h) );

直接引用

filter(heros, LambdaTest::checker);

2.引用對象的方法

引用LambdaTest對象中testHero方法

LambdaTest lambdaTest = new LambdaTest();
filter(heros, lambdaTest::testHero);

3.引用容器對象的方法

在Hero對象中有

private boolean matched(){
    return (hp > 100 && damage < 50);
}

在Lambda表達(dá)式中使用

filter(heros, h -> h.matched());

直接引用

filter(heros, Hero::matched);

五、總結(jié)

可以認(rèn)為Lambda表達(dá)式可以看做是一個方法,我們把這個方法直接可以傳遞到另一個方法中。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/77817.html

相關(guān)文章

  • 轉(zhuǎn) | Java8初體驗(一)lambda達(dá)式語法

    摘要:初體驗下面進(jìn)入本文的正題表達(dá)式。接下來展示表達(dá)式和其好基友的配合。吐槽一下方法引用表面上看起來方法引用和構(gòu)造器引用進(jìn)一步簡化了表達(dá)式的書寫,但是個人覺得這方面沒有的下劃線語法更加通用。 感謝同事【天錦】的投稿。投稿請聯(lián)系 tengfei@ifeve.com 本文主要記錄自己學(xué)習(xí)Java8的歷程,方便大家一起探討和自己的備忘。因為本人也是剛剛開始學(xué)習(xí)Java8,所以文中肯定有錯誤和理解偏...

    Lucky_Boy 評論0 收藏0
  • Java8-1-初識Lambda達(dá)式與函數(shù)式接口

    摘要:而在中,表達(dá)式是對象,它們必須依附于一類特別的對象類型函數(shù)式接口。即表達(dá)式返回的是函數(shù)式接口類型。 Java8被稱作Java史上變化最大的一個版本。其中包含很多重要的新特性,最核心的就是增加了Lambda表達(dá)式和Stream API。這兩者也可以結(jié)合在一起使用。首先來看下什么是Lambda表達(dá)式。Lambda表達(dá)式,維基百科上的解釋是一種用于表示匿名函數(shù)和閉包的運算符,感覺看到這個解釋...

    jzman 評論0 收藏0
  • 樂字節(jié)-Java8新特性-Lambda達(dá)式

    摘要:很多語言等從設(shè)計之初就支持表達(dá)式。注意此時外部局部變量將自動變?yōu)樽鳛榉椒ǚ祷刂道臃祷嘏袛嘧址欠駷榭张袛嘧址欠駷榭战裉礻P(guān)于新特性表達(dá)式就講到這里了,接下來我會繼續(xù)講述新特性之函數(shù)式接口。 上一篇文章我們了解了Java8新特性-接口默認(rèn)方法,接下來我們聊一聊Java8新特性之Lambda表達(dá)式。 Lambda表達(dá)式(也稱為閉包),它允許我們將函數(shù)當(dāng)成參數(shù)傳遞給某個方法,或者把代碼...

    gggggggbong 評論0 收藏0
  • Java8實戰(zhàn)》-第三章讀書筆記(Lambda達(dá)式-01)

    摘要:之前,使用匿名類給蘋果排序的代碼是的,這段代碼看上去并不是那么的清晰明了,使用表達(dá)式改進(jìn)后或者是不得不承認(rèn),代碼看起來跟清晰了。這是由泛型接口內(nèi)部實現(xiàn)方式造成的。 # Lambda表達(dá)式在《Java8實戰(zhàn)》中第三章主要講的是Lambda表達(dá)式,在上一章節(jié)的筆記中我們利用了行為參數(shù)化來因?qū)Σ粩嘧兓男枨螅詈笪覀円彩褂玫搅薒ambda,通過表達(dá)式為我們簡化了很多代碼從而極大地提高了我們的...

    longshengwang 評論0 收藏0
  • 樂字節(jié)-Java8核心特性實戰(zhàn)之Lambda達(dá)式

    摘要:使用表達(dá)式,使得應(yīng)用變得簡潔而緊湊。很多語言等從設(shè)計之初就支持表達(dá)式。表達(dá)式的參數(shù)與函數(shù)式接口內(nèi)方法的參數(shù),返回值類型相互對應(yīng)。更多教程和資料請上騰訊課堂樂字節(jié) showImg(https://segmentfault.com/img/bVbtotg?w=935&h=345); Java8 引入Lambda表達(dá)式,允許開發(fā)者將函數(shù)當(dāng)成參數(shù)傳遞給某個方法,或者把代碼本身當(dāng)作數(shù)據(jù)進(jìn)行處理。...

    Karuru 評論0 收藏0
  • Java8 lambda支持

    摘要:函數(shù)式編程說前,先理解下什么是函數(shù)式編程,如果你是個純程序員,而且之前一直是沒有使用過,可能還沒有使用過這種編程方式。表達(dá)式可以表示閉包注意和數(shù)學(xué)傳統(tǒng)意義上的不同。意思就是說,只要是接口類型,我們都可以傳入表達(dá)式。在包下定義了各種函數(shù)接口 函數(shù)式編程 說lambdas前,先理解下什么是函數(shù)式編程,如果你是個純Java程序員,而且之前一直是沒有使用過Java8,可能還沒有使用過這種編程方...

    Betta 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<