1堤框、Optional是java8中增加的API罐寨,可以很好的解決空指針異常靡挥,而不用我們來(lái)進(jìn)行顯式的空值檢測(cè)。
2鸯绿、Java8中的APIOptional中的方法跋破,獲取Optional中的值用get()方法就可以了,那么和orElse()瓶蝴、orElseGet()的獲取值的方法有什么不同呢毒返?
3、當(dāng)我們?cè)贗DEA中使用get()時(shí)舷手,IDEA會(huì)高亮提示拧簸,此方法需要先用isPresent()進(jìn)行判斷,然后再調(diào)用get()方法男窟。
4盆赤、而有了Optional后代碼如果寫成下面這樣,其實(shí)并沒(méi)有多大區(qū)別
那么我們?nèi)绻_使用Optional的獲取值的方法呢?
就要提到orElse和orElseGet了歉眷。
用法:
orElse
如果Optional實(shí)例有值則將其返回牺六,否則返回orElse方法傳入的參數(shù)
public T orElse(T other);
參數(shù):other姥芥,即需要被返回的值
返回:當(dāng)只存在時(shí)返回值兔乞,不存在返回other(可以理解為自定義值,如字符串的內(nèi)容)
例子:
orElseGet
orElseGet與orElse方法類似凉唐,區(qū)別在于得到的默認(rèn)值庸追。orElse方法將傳入的字符串作為默認(rèn)值,orElseGet方法可以接受Supplier的實(shí)現(xiàn)用來(lái)生成默認(rèn)值
publicTorElseGet(Supplier<?extendsT>other)台囱;
參數(shù):繼承Supplier接口的other淡溯,當(dāng)值為null的時(shí)候返回
返回:值存在返回值,值不存在返回other
異常:當(dāng)不允許值為空的情況(例如)下值為空時(shí)或other無(wú)效拋NullPointerException