成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java8新特性第2章(接口默認方法)

UCloud / 1862人閱讀

摘要:默認方法就是為了解決這一問題的,這樣接口在發(fā)布之后依然能夠繼續(xù)演化。默認方法就是向接口增加新的行為。默認方法擁有默認實現(xiàn),接口實現(xiàn)類通過繼承得到該默認實現(xiàn)。

轉(zhuǎn)載請注明出處:https://zhuanlan.zhihu.com/p/20540188

在Java中一個接口一旦發(fā)布就已經(jīng)被定型,除非我們能夠一次性的更新所有該接口的實現(xiàn),否者在接口的添加新方法將會破壞現(xiàn)有接口的實現(xiàn)。默認方法就是為了解決這一問題的,這樣接口在發(fā)布之后依然能夠繼續(xù)演化。

默認方法就是向接口增加新的行為。它是一種新的方法:接口方法可以是抽象的或者是默認的。默認方法擁有默認實現(xiàn),接口實現(xiàn)類通過繼承得到該默認實現(xiàn)。默認方法不是抽象的,所以我們可以放心的向函數(shù)式接口里增加默認方法,而不用擔(dān)心函數(shù)式接口單抽象方法的限制。

public interface Iterator {

    boolean hasNext();

    E next();

    default void remove() {
        throw new UnsupportedOperationException("remove");
    }

    default void forEachRemaining(Consumer action) {
        Objects.requireNonNull(action);
        while (hasNext())
            action.accept(next());
    }
}

和其他方法一樣,默認方法也可以被繼承。

除了上面看到的默認方法,Java8中還允許我們在接口中定義靜態(tài)方法。這使得我們可以從接口中直接調(diào)用它相關(guān)的輔助方法,而不是從其它的輔助類中調(diào)用(如Collections)。在做集合中元素比較的時候,我們一般需要使用靜態(tài)輔助方法生成實現(xiàn)Comparator的比較器,在Java8中我們可以直接把該靜態(tài)方法定義在Comparator接口中:

public static >
    Comparator comparing(Function keyExtractor) {
    return (c1, c2) -> keyExtractor.apply(c1).compareTo(keyExtractor.apply(c2));
}

如果大家喜歡這一系列的文章,歡迎關(guān)注我的知乎專欄、GitHub、簡書博客。

知乎專欄:https://zhuanlan.zhihu.com/baron

GitHub:https://github.com/BaronZ88

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/66490.html

相關(guān)文章

  • Java8特性1(Lambda表達式)

    摘要:一表達式匿名內(nèi)部類最大的問題在于其冗余的語法,比如前面的中五行代碼僅有一行是在執(zhí)行任務(wù)??偨Y(jié)基于詞法作用域的理念,表達式不可以掩蓋任何其所在上下文的局部變量。 轉(zhuǎn)載請注明出處:https://zhuanlan.zhihu.com/p/20540175 在介紹Lambda表達式之前,我們先來看只有單個方法的Interface(通常我們稱之為回調(diào)接口): public interface...

    ningwang 評論0 收藏0
  • 在Android項目中使用Java8

    摘要:現(xiàn)在爸爸終于讓平臺支持了,這篇文章中便來和大家聊聊如何在項目中配置使用。要想在項目中使用的新特性,需要將你的升級到及以上版本,并采用新的編譯。 轉(zhuǎn)載請注明出處:https://zhuanlan.zhihu.com/p/23279894 前言 在過去的文章中我介紹過Java8的一些新特性,包括: Java8新特性第1章(Lambda表達式) Java8新特性第2章(接口默認方法) J...

    junnplus 評論0 收藏0
  • Java學(xué)習(xí)路線總結(jié),搬磚工逆襲Java架構(gòu)師(全網(wǎng)最強)

    摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進步歡迎點贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...

    Scorpion 評論0 收藏0
  • Java8實戰(zhàn)》-筆記(默認方法

    摘要:默認方法傳統(tǒng)上,程序的接口是將相關(guān)方法按照約定組合到一起的方式。其一,允許在接口內(nèi)聲明靜態(tài)方法。實際上,到目前為止你已經(jīng)使用了多個默認方法。通過它,我們能夠知道一個方法是否為默認方法。這就是默認方法試圖解決的問題。 默認方法 傳統(tǒng)上,Java程序的接口是將相關(guān)方法按照約定組合到一起的方式。實現(xiàn)接口的類必須為接口中定義的每個方法提供一個實現(xiàn),或者從父類中繼承它的實現(xiàn)。但是,一旦類庫的設(shè)計...

    sanyang 評論0 收藏0

發(fā)表評論

0條評論

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