平時(shí)開(kāi)發(fā)的工作中, 自己組內(nèi)的很多大佬經(jīng)常使用Optional的用法, 自己?jiǎn)査麄? 這個(gè)到底有什么好處呢,他們說(shuō)可以很好的規(guī)避好空指針的問(wèn)題, 我們?cè)谄綍r(shí)寫(xiě)java代碼的時(shí)候, 如果是一個(gè)新手, 肯定很多情況下都會(huì)出現(xiàn)空指針的報(bào)錯(cuò), 而java8 以后提供的Optional的問(wèn)題, 就可以很好地規(guī)避我們空指針的問(wèn)題.
創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供汕城企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站制作、網(wǎng)站建設(shè)、HTML5、小程序制作等業(yè)務(wù)。10年已為汕城眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)的建站公司優(yōu)惠進(jìn)行中。空指針異常是導(dǎo)致Java應(yīng)用程序失敗的最常見(jiàn)原因。以前,為了解決空指針異常,Google公司著名的Guava項(xiàng)目引入了Optional類(lèi),Guava通過(guò)使用檢查空值的方式來(lái)防止代碼污染,它鼓勵(lì)程序員寫(xiě)更干凈的代碼。受到Google Guava的啟發(fā),Optional類(lèi)已經(jīng)成為Java 8類(lèi)庫(kù)的一部分。Optional實(shí)際上是個(gè)容器:它可以保存類(lèi)型T的值,或者僅僅保存null。Optional提供很多有用的方法,這樣我們就不用顯式進(jìn)行空值檢測(cè)。
1. 在Optional之前
在Java 8之前,程序員將返回null而不是Optional。這種方法有一些缺點(diǎn)。一種是沒(méi)有明確的方法來(lái)表示null可能是一個(gè)特殊值。相比之下,在API中返回Optional是明確的聲明,其中可能沒(méi)有值。如果我們要確保不會(huì)出現(xiàn)空指針異常,則需要對(duì)每個(gè)引用進(jìn)行顯式的空檢查,如下所示,我們都同意這是很多樣板。
// Life before Optional private void getIsoCode( User user){ if (user != null) { Address address = user.getAddress(); if (address != null) { Country country = address.getCountry(); if (country != null) { String isocode = country.getIsocode(); if (isocode != null) { isocode = isocode.toUpperCase(); } } } } }