摘要:默認方法就是為了解決這一問題的,這樣接口在發(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 super E> 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
摘要:一表達式匿名內(nèi)部類最大的問題在于其冗余的語法,比如前面的中五行代碼僅有一行是在執(zhí)行任務(wù)??偨Y(jié)基于詞法作用域的理念,表達式不可以掩蓋任何其所在上下文的局部變量。 轉(zhuǎn)載請注明出處:https://zhuanlan.zhihu.com/p/20540175 在介紹Lambda表達式之前,我們先來看只有單個方法的Interface(通常我們稱之為回調(diào)接口): public interface...
摘要:現(xiàn)在爸爸終于讓平臺支持了,這篇文章中便來和大家聊聊如何在項目中配置使用。要想在項目中使用的新特性,需要將你的升級到及以上版本,并采用新的編譯。 轉(zhuǎn)載請注明出處:https://zhuanlan.zhihu.com/p/23279894 前言 在過去的文章中我介紹過Java8的一些新特性,包括: Java8新特性第1章(Lambda表達式) Java8新特性第2章(接口默認方法) J...
摘要:哪吒社區(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...
摘要:默認方法傳統(tǒng)上,程序的接口是將相關(guān)方法按照約定組合到一起的方式。其一,允許在接口內(nèi)聲明靜態(tài)方法。實際上,到目前為止你已經(jīng)使用了多個默認方法。通過它,我們能夠知道一個方法是否為默認方法。這就是默認方法試圖解決的問題。 默認方法 傳統(tǒng)上,Java程序的接口是將相關(guān)方法按照約定組合到一起的方式。實現(xiàn)接口的類必須為接口中定義的每個方法提供一個實現(xiàn),或者從父類中繼承它的實現(xiàn)。但是,一旦類庫的設(shè)計...
閱讀 2870·2021-10-14 09:42
閱讀 3184·2019-08-30 15:52
閱讀 3274·2019-08-30 14:02
閱讀 1116·2019-08-29 15:42
閱讀 540·2019-08-29 13:20
閱讀 1167·2019-08-29 12:24
閱讀 486·2019-08-26 10:20
閱讀 688·2019-08-23 18:31