讀Java8函數式編程筆記04_類庫

来源:https://www.cnblogs.com/lying7/archive/2023/01/29/17071692.html
-Advertisement-
Play Games

*以下內容為本人的學習筆記,如需要轉載,請聲明原文鏈接 微信公眾號「englyf」https://mp.weixin.qq.com/s/2GFLTstDC7w6u3fTJxflNA 本文大概 1685 個字,閱讀需花 6 分鐘內容不多, 但也花了一些精力如要交流, 歡迎關註我然後評論區留言 謝謝你的 ...


1. 預設方法

1.1. 介面中定義的包含方法體的方法,方法名有default關鍵字做首碼

1.1.1. 在任何介面中,無論函數介面還是非函數介面,都可以使用該方法

1.2. Collection介面

1.2.1. stream方法

1.3. Iterable介面

1.3.1. forEach方法

1.4. 虛方法

1.5. 類中重寫的方法優先順序高於介面中定義的預設方法

1.5.1. 能簡化很多繼承問題

1.5.2. 任何時候,一旦與類中定義的方法產生衝突,都要優先選擇類中定義的方法

1.5.3. 如果類中重寫的方法沒有預設方法的優先順序高,那麼就會破壞已有的實現

1.5.4. 為了在介面上向後相容

2. 介面的靜態方法

2.1. Stream.of

2.2. Stream.range

2.3. Stream.iterate

3. 改變了人們認識類庫的方式,介面中的方法也可以包含代碼體

4. 函數介面的方法

4.1. 使用Predicate,調用test方法

4.2. 使用Function,調用apply方法

5. 基本類型

5.1. int

5.2. 內建在語言和運行環境中

5.3. 基本的程式構建模塊

6. 裝箱類型

6.1. Integer

6.2. 普通的Java類

6.3. 對基本類型的一種封裝

7. 在最壞的情況下,同樣大小的數組,Integer[]要比int[]多占用6倍記憶體

8. 裝箱

8.1. 將基本類型轉換為裝箱類型

9. 拆箱

9.1. 將裝箱類型轉換為基本類型

10. Stream類特殊處理的基本類型

10.1. IntStream

10.2. DoubleStream

10.3. LongStream

10.4. summaryStatistics方法

10.4.1. min

10.4.2. max

10.4.3. average

10.4.4. sum

11. BinaryOperator

11.1. 一種特殊的BiFunction類型

11.2. 參數的類型和返回值的類型相同

12. 目標類型推導規則

12.1. 如果只有一個可能的目標類型,由相應函數介面里的參數類型推導得出

12.2. 如果有多個可能的目標類型,由最具體的類型推導得出

12.3. 如果有多個可能的目標類型且最具體的類型不明確,則需人為指定類型

13. @FunctionalInterface

13.1. 每個用作函數介面的介面都應該添加這個註釋

13.2. Java中有一些介面,雖然只含一個方法,但並不是為了使用Lambda表達式來實現的

13.3. 關閉資源是更改狀態的另一種形式

13.4. 該註釋添加給一個枚舉類型、類或另一個註釋,或者介面包含不止一個抽象方法,javac就會報錯

13.4.1. 重構代碼時,使用它能很容易發現問題

14. 多重繼承

14.1. 使用super關鍵字是指向父類

14.2. InterfaceName.super這樣的語法指的是繼承自父介面的方法

15. 三定律

15.1. 類勝於介面。如果在繼承鏈中有方法體或抽象的方法聲明,那麼就可以忽略介面中定義的方法

15.1.1. 為了讓代碼向後相容

15.2. 子類勝於父類。如果一個介面繼承了另一個介面,且兩個介面都定義了一個預設方法,那麼子類中定義的方法勝出

15.3. 如果上面兩條規則不適用,子類要麼需要實現該方法,要麼將該方法聲明為抽象方法

16. 介面和抽象類的區別

16.1. 介面允許多重繼承,卻沒有成員變數

16.2. 抽象類可以繼承成員變數,卻不能多重繼承

17. Optional

17.1. 在一個值可能為空的建模情況下,使用Optional對象能替代使用null值

17.2. 為核心類庫新設計的一個數據類型,用來替換null值

17.2.1. 使用null代表值不存在的最大問題在於NullPointerException

17.3. Optional對象鼓勵程式員適時檢查變數是否為空,以避免代碼缺陷

17.4. 它將一個類的API中可能為空的值文檔化,這比閱讀實現代碼要簡單很多

17.5. 方法

17.5.1. get

17.5.2. orElse

17.5.2.1. 當Optional對象為空時,該方法提供了一個備選值

17.5.3. orElseGet

17.5.3.1. 接受一個Supplier對象,只有在Optional對象真正為空時才會調用

17.5.4. empty

17.5.5. ofNullable

17.5.5.1. 將一個空值轉換成Optional對象

17.5.6. isPresent

17.5.6.1. 一個Optional對象里是否有值


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 每當有新員工入職,人事小姐姐都要收集大量的工資卡信息,並且生成Excel文檔,看到小姐姐這麼辛苦,我就忍不住要去幫她了… 於是我用1行代碼就實現了自動識別銀行卡信息並且自動生成Excel文件,小姐姐當場就亮眼汪汪的看著我,搞得我都害羞了~ 第一步:識別一張銀行卡 識別銀行卡的代碼最簡單,只需要1行騰 ...
  • 1. 基礎知識 1.1 基本配置 main # 全局配置 events { # nginx 工作模式配置 } http { # http 設置 .... server { # 伺服器主機配置 .... location { # 路由配置 .... } location path { .... } l ...
  • 本文結合京東監控埋點場景,對解決樣板代碼的技術選型方案進行分析,給出最終解決方案後,結合理論和實踐進一步展開。通過關註文中的技術分析過程和技術場景,讀者可收穫一種樣板代碼思想過程和解決思路,並對Java編譯器底層有初步瞭解。 ...
  • 在golang中可以使用a := b這種方式將b賦值給a,只有當b能進行深拷貝時a與b才不會互相影響,否則就需要進行更為複雜的深拷貝。 下麵就是Go賦值操作的一個說明: Go語言中所有賦值操作都是值傳遞,如果結構中不含指針,則直接賦值就是深度拷貝;如果結構中含有指針(包括自定義指針,以及切片,map ...
  • 第一種方式:使用{} firstDict = {"name": "wang yuan wai ", "age" : 25} 說明:{}為創建一個空的字典對象 第二種方式:使用fromkeys()方法 second_dict = dict.fromkeys(("name", "age")) #valu ...
  • 如果您想查找高於或低於平均值的數字,可以不必計算該平均值,就能查看更高或更低的值。通過Java應用程式,可以自動突出顯示這些數字。除了快速突出顯示高於或低於平均值的值外,您還可以查看高於或低於的值的個數。現在讓我們看看如何在 Java應用程式中實現此操作。 引入jar包 導入方法1: 手動引入。將  ...
  • 幾乎所有的高級編程語言都有自己的垃圾回收機制,開發者不需要關註記憶體的申請與釋放,Python 也不例外。Python 官方團隊的文章 https://devguide.python.org/internals/garbage-collector 詳細介紹了 Python 中的垃圾回收演算法,本文是這篇 ...
  • 在新版本的pandas中,上述代碼會引起警告,建議改成SQLAlchemy connectable(engine/connection),後續代碼將引入這種升級的連接方式。 ...
一周排行
    -Advertisement-
    Play Games
  • .NET Core 選項系統的主要實現在 Microsoft.Extensions.Options 和 Microsoft.Extensions.Options.ConfigurationExtensions 兩個 Nuget 包。對於一個框架的源碼進行解讀,我們可以從我們常用的框架中的類或方法入手 ...
  • 最近在工作中遇到一個問題,就是我有多個線程會調用bitmap對象,運行的時候報錯,對象當前正在其他地方使用。第一反應肯定是加鎖啊,於是我就在每個用到bitmap的地方都加了鎖,但是運行之後依然報這個錯 測試代碼如下 using System; using System.Drawing; using ...
  • 一:背景 1. 講故事 前段時間有位朋友微信找到我,說他的程式使用 hsl 庫之後,採集 plc 時記憶體溢出,讓我幫忙看一下怎麼回事,哈哈,貌似是分析之旅中的第二次和 hsl 打交道,既然找到我,那就上 windbg 說話吧。 二:WinDbg 分析 1. 為什麼會記憶體溢出 簡單觀察程式的提交記憶體之 ...
  • 在 IIS 上啟用 Websocket 在 Windows Server 2012 或更高版本上啟用對 WebSocket 協議的支持: 備註 使用 IIS Express 時無需執行這些步驟 通過“管理”菜單或“伺服器管理器”中的鏈接使用“添加角色和功能”嚮導。 選擇“基於角色或基於功能的安裝”。 ...
  • C#-垃圾回收機制(GC) 什麼是GC 官網中有這麼一句話: The garbage collector is a common language runtime component that controls the allocation and release of managed memory ...
  • 呆了2個大屏行業的公司,對大屏幕有一些瞭解,所以整理下所瞭解的觸摸屏相關概念。方便自己以及進入這個行業的小伙伴們,能有個系統、快速的認知。 觸摸屏詳細的知識點,網上其實都有。整理資料過程中,我也瞭解了更多的觸摸屏知識,像聲波屏、光學屏之類的之前就沒接觸。下麵分不同的模塊,給大家介紹 交互觸摸屏類型 ...
  • 近段時間忙於各種項目和對【易排平臺】的優化,沒顧得上分享APS相關的小技巧,回頭看看小公眾號的關註人數早已達1500+,在此爭取時間寫一下這段時間在項目上及平臺優化過程中遇到的一些小技巧,以感謝諸位的關註。過去數月的解決的問題中,涉及最多的是規劃模型中,實現各種時間維度的功能,目前在平臺上也稍有成果 ...
  • 針對大量log日誌快速定位錯誤地方 動態查看日誌 tail -f catalina.ou 從頭打開日誌文件 cat catalina.ou 可以使用 >nanjiangtest.txt 輸出某個新日誌去查看 [[email protected] logs]# cat -n catalina.out |grep 7 ...
  • 前言 RocketMQ是阿裡巴巴旗下一款開源的MQ框架,經歷過雙十一考驗、Java編程語言實現,有非常好完整生態系統。RocketMQ作為一款純java、分散式、隊列模型的開源消息中間件,支持事務消息、順序消息、批量消息、定時消息、消息回溯等 本篇文章第一部分屬於一些核心概念和工作流程的講解;第二部 ...
  • 在java,c#類的成員修飾符包括,公有、私有、程式集可用的、受保護的。 對於python來說,只有兩個成員修飾符:公有成員,私有成員 成員修飾符是來修飾誰呢?當然是修飾成員了。那麼python類的成員包括什麼呢? python成員: 欄位,方法,屬性 每個類成員的修飾符有兩種: 公有成員:內部外部 ...