第55條:謹(jǐn)慎返回optional与斤。
- 集合、映射尼斧、Stream姜贡、數(shù)組、Optional都不應(yīng)該包裝在Optional中突颊。
- 如果無法返回結(jié)果并且當(dāng)沒有返回結(jié)果時客戶端必須執(zhí)行特殊得處理鲁豪,那么就應(yīng)該聲明這個方法返回Optional<T>。
- Optional會有一定的性能開銷律秃,如果注重性能則需要慎重考慮Optional爬橡。
- 永遠(yuǎn)不應(yīng)該返回基本包裝類型的Optional。
- 盡量不要把Optional用作返回值以外的其它用途棒动。
- Optional是一個必須進(jìn)行分配和初始化的對象糙申,從optional讀取值時需要額外的開銷。這使得optional不適用于一些注重性能的情況船惨。
平時寫代碼的時候一般用到Optional的時候要么是和Stream一起柜裸,要么是使用Optional.ofNullable來處理一些可能為空的值缕陕,通過orelse可以避免分類討論。單獨使用確實比較少疙挺,更別提當(dāng)做返回結(jié)果了扛邑。我感覺拿到Optional以后還是需要考慮空的問題,這比直接返回null可能好在強(qiáng)制用戶去處理可能的空值铐然?而且Optional.of完全無法接受null蔬崩,所以使用Optional的時候還是需要慎重。