
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物件里是否有值
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/542506.html
標籤:其他
下一篇:Python工具箱系列(二十三)
