JDK1.8新特性值Optional

在我們的開發中,NullPointerException可謂是隨時隨處可見,爲了避免空指針異常,我們常常需要進行一
些防禦式的檢查,所以在代碼中常常可見if(obj != null) 這樣的判斷。幸好在JDK1.8中,java爲我們提供了
一個Optional類,Optional類能讓我們省掉繁瑣的非空的判斷。下面先說一下Optional中爲我們提供的方法

方法 描述
of 把指定的值封裝爲Optional對象,如果指定的值爲null,則拋出NullPointerException
empty 創建一個空的Optional對象
ofNullable 把指定的值封裝爲Optional對象,如果指定的值爲null,則創建一個空的Optional對象
get 如果創建的Optional中有值存在,則返回此值,否則拋出NoSuchElementException
orElse 如果創建的Optional中有值存在,則返回此值,否則返回一個默認值
orElseGet 如果創建的Optional中有值存在,則返回此值,否則返回一個由Supplier接口生成的值
orElseThrow 如果創建的Optional中有值存在,則返回此值,否則拋出一個由指定的Supplier接口生成的異常
filter 如果創建的Optional中的值滿足filter中的條件,則返回包含該值的Optional對象,否則返回一個空的Optional對象
map 如果創建的Optional中的值存在,對該值執行提供的Function函數調用
flagMap 如果創建的Optional中的值存在,就對該值執行提供的Function函數調用,返回一個Optional類型的值,否則就返回一個空的Optional對象
isPresent 如果創建的Optional中的值存在,返回true,否則返回false
ifPresent 如果創建的Optional中的值存在,則執行該方法的調用,否則什麼也不做

下面我們寫幾個例子來具體看一下每個方法的作用:

of

//創建一個值爲張三的String類型的Optional
Optional<String> ofOptional = Optional.of("張三");
//如果我們用of方法創建Optional對象時,所傳入的值爲null,則拋出NullPointerException如下圖所示
Optional<String> nullOptional = Optional.of(null);

ofNullable

//爲指定的值創建Optional對象,如果傳入的值爲null,默認返回空的Optinal,不會報錯
Optional<String> nullOptional = Optional.ofNullable(null);
Optional<String> nullOptional = Optional.ofNullable("lisi");

empty

//創建一個空的String類型的Optional對象
Optional<String> emptyOptional = Optional.empty();

get

//如果創建的Optional對象中有值存在則返回此值,如果沒有值存在,則會拋出 NoSuchElementException異常
Optional<String> stringOptional = Optional.of("張三");
System.out.println(stringOptional.get());

orElse

//如果創建的Optional中有值存在,則返回此值,否則返回一個默認值
Optional<String> stringOptional = Optional.of("張三");
System.out.println(stringOptional.orElse("zhangsan"));

Optional<String> emptyOptional = Optional.empty();
System.out.println(emptyOptional.orElse("李四"));

orElseGet

如果創建的Optional中有值存在,則返回此值,否則返回一個由Supplier接口的實現類生成的值

Optional<String> emptyOptional = Optional.empty();
System.out.println(emptyOptional.orElseGet(() -> {
    String str = "name";
    return str;
}));

https://blog.csdn.net/zknxx/article/details/78586799

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章