摘要:默認方法就是為了解決這一問題的,這樣接口在發布之后依然能夠繼續演化。默認方法就是向接口增加新的行為。默認方法擁有默認實現,接口實現類通過繼承得到該默認實現。
轉載請注明出處:https://zhuanlan.zhihu.com/p/20540188
在Java中一個接口一旦發布就已經被定型,除非我們能夠一次性的更新所有該接口的實現,否者在接口的添加新方法將會破壞現有接口的實現。默認方法就是為了解決這一問題的,這樣接口在發布之后依然能夠繼續演化。
默認方法就是向接口增加新的行為。它是一種新的方法:接口方法可以是抽象的或者是默認的。默認方法擁有默認實現,接口實現類通過繼承得到該默認實現。默認方法不是抽象的,所以我們可以放心的向函數式接口里增加默認方法,而不用擔心函數式接口單抽象方法的限制。
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中還允許我們在接口中定義靜態方法。這使得我們可以從接口中直接調用它相關的輔助方法,而不是從其它的輔助類中調用(如Collections)。在做集合中元素比較的時候,我們一般需要使用靜態輔助方法生成實現Comparator的比較器,在Java8中我們可以直接把該靜態方法定義在Comparator接口中:
public static> Comparator comparing(Function keyExtractor) { return (c1, c2) -> keyExtractor.apply(c1).compareTo(keyExtractor.apply(c2)); }
如果大家喜歡這一系列的文章,歡迎關注我的知乎專欄、GitHub、簡書博客。
知乎專欄:https://zhuanlan.zhihu.com/baron
GitHub:https://github.com/BaronZ88
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66490.html
摘要:一表達式匿名內部類最大的問題在于其冗余的語法,比如前面的中五行代碼僅有一行是在執行任務。總結基于詞法作用域的理念,表達式不可以掩蓋任何其所在上下文的局部變量。 轉載請注明出處:https://zhuanlan.zhihu.com/p/20540175 在介紹Lambda表達式之前,我們先來看只有單個方法的Interface(通常我們稱之為回調接口): public interface...
摘要:現在爸爸終于讓平臺支持了,這篇文章中便來和大家聊聊如何在項目中配置使用。要想在項目中使用的新特性,需要將你的升級到及以上版本,并采用新的編譯。 轉載請注明出處:https://zhuanlan.zhihu.com/p/23279894 前言 在過去的文章中我介紹過Java8的一些新特性,包括: Java8新特性第1章(Lambda表達式) Java8新特性第2章(接口默認方法) J...
摘要:哪吒社區技能樹打卡打卡貼函數式接口簡介領域優質創作者哪吒公眾號作者架構師奮斗者掃描主頁左側二維碼,加入群聊,一起學習一起進步歡迎點贊收藏留言前情提要無意間聽到領導們的談話,現在公司的現狀是碼農太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區Java技能樹打卡?【打卡貼 day2...
摘要:默認方法傳統上,程序的接口是將相關方法按照約定組合到一起的方式。其一,允許在接口內聲明靜態方法。實際上,到目前為止你已經使用了多個默認方法。通過它,我們能夠知道一個方法是否為默認方法。這就是默認方法試圖解決的問題。 默認方法 傳統上,Java程序的接口是將相關方法按照約定組合到一起的方式。實現接口的類必須為接口中定義的每個方法提供一個實現,或者從父類中繼承它的實現。但是,一旦類庫的設計...
閱讀 2860·2021-10-14 09:42
閱讀 3180·2019-08-30 15:52
閱讀 3257·2019-08-30 14:02
閱讀 1111·2019-08-29 15:42
閱讀 535·2019-08-29 13:20
閱讀 1163·2019-08-29 12:24
閱讀 484·2019-08-26 10:20
閱讀 683·2019-08-23 18:31