最近新入職公司,看代碼的時(shí)候發(fā)現(xiàn)大量的Optional.ofNullable(..).orElse(..)的使用
一看底層就是一個(gè)包裝好的三元運(yùn)算蒜茴,避免空指針。
結(jié)果 = Optional.ofNullable(值1).orElse(值2)
值1不空取值1,值1空了取值2.? ? ? ? ? 老三元了~
但是殊霞,它有些坑要避一避。汰蓉。绷蹲。不注意全是BUG
1.字符串就別用它判空了,""空字符判定為非空
還是老老實(shí)實(shí)用StringUtils.isEmpty吧
2.Optional.ofNullable(m1()).orElse(m2())
m1結(jié)果非空還是會(huì)執(zhí)行m2!
如果此時(shí)m2()中有增改庫(kù)的業(yè)務(wù)操作......
所以顾孽,如果orElse()中的計(jì)算或其他處理業(yè)務(wù)很多時(shí)祝钢,推薦使用orElseGet()
要下班了,狗特白~