Java8 Optional && Guava Optional

Java8 -- Optional

boolean isPresent():與obj != null()同樣;調用get()前要調用isPresent()檢查,否則會報錯函數

Optional的三種構造方式:fetch

Optional.of(obj):obj不能爲null,否則報npespa

Optional.ofNullable(obj):obj爲null時獲得Optional.empty(),非null就調用Optional.of(obj)對象

Optional.empty()get

orElse(null):存在即返回,無則提供默認值io

orElseGet(() -> fetchAUserFromDatabase());:存在即返回,無則由函數來產生List

ifPresent(System.out::println);:存在就作點什麼(不要if(obj.isPresent()) System.out::println;)map

obj.map(o -> o.getNames()).orElse(Collections.emptyList()):若是names有,就返回,沒有就返回默認值數據類型

map能夠無限級聯:obj.map(o -> o.getNames()).map(name -> name.toUpperCase()).orElse(Collections.emptyList())數據

Guava -- Optional

Optional.of(T):得到一個Optional對象,其內部包含了一個非null的T數據類型實例,若T=null,則馬上報錯

Optional.absent():得到一個Optional對象,其內部包含了空值

Optional.fromNullable(T):將一個T的實例轉換爲Optional對象,T的實例能夠爲空

boolean isPresent():若是Optional包含的T實例不爲null,則返回true;若T實例爲null,返回false

T get():返回Optional包含的T實例,該T實例必須不爲空;不然,對包含null的Optional實例調用get()會拋出一個IllegalStateException異常

T or(T):若Optional實例中包含了傳入的T的相同實例,返回Optional包含的該T實例,不然返回輸入的T實例做爲默認值

T orNull():返回Optional實例中包含的非空T實例,若是Optional中包含的是空值,返回null,逆操做是fromNullable()

Set<T> asSet():返回一個不可修改的set,該Set中包含Optional實例中包含的全部非空存在的T實例,且在該Set中,每一個T實例都是單態,若是Optional中沒有非空存在的T實例,返回的將是一個空的不可修改的Set。

相關文章
相關標籤/搜索