第10章 用Optional取代null

2021-10-06 13:34:38 字數 749 閱讀 3864

optional.empty() optional.of() optional.ofnullable()

注意:map與flatmap對比

你永遠不要忘記語言的首要目的是溝通。

optional無法序列化,設計的初衷僅僅是要支援能返回optional物件的語法。[p212]

注意:不能作為類的字段

這點尤為重要,即類要純粹。如果是pojo就原始型別就可以了,如果是領域物件,則更不應該使用optional作為field

optional不能作為方法引數

另一種不太適合使用optional的情況是將該型別作為方法或者建構函式的引數,這將導致不必要的**複雜化。

user user = new user("[email protected]", "1234", optional.empty());
相反,使用方法過載(method overloading)來處理非強制性引數要方便得多。

使用不解包的方式組合,運用flatmap、map

例如:

optionalvalue = optional.ofnullable(map.get("key"));
當丟擲異常的時候丟擲optional.empty()

基礎型別的optional物件,以及為什麼避免使用它們

注意對比optional與stream的通用模式。

第10章 函式

定義函式的格式 name command list 呼叫函式的格式 name 省略括號 檢視到所宣告的函式定義 declare f name 取消定義的函式,可以使用unset命令 unset name 案例 bin bash 定義函式printmsg用來輸出資訊到終端螢幕,該函式至少需要兩個引數 ...

第10章第8題

mylist.h ifndef mylist h define mylist h include const int len 10 class mylist endif void show double mid 這個函式用於簡單的顯示乙個double mylist.cxx include mylis...

第10章 預處理

10.1 預處理指令 指令 含義例項 define 定義巨集 define debug undef 取消巨集的定義 undef debug if判斷 if defined debug else cout debug elif else endif cout release error 輸出錯誤資訊 ...