讀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
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...