java8新特性之Optional類

  1. Optional類的作用
    java.util.Optional類是一個包含null值的容器對象,可以代替xx!=null使用。更加優(yōu)雅的進(jìn)行判空處理。

  2. 常用方法
    2.1 of
    為value創(chuàng)建一個Optional對象,如果value為null,會報出NullOpinterException異常。


    of.png

    2.2 ofNullable
    為value創(chuàng)建一個Optional對象,允許為null。


    ofNullable.png

    2.3 isPresent
    判斷當(dāng)前value是否為null,如果不為null則返回true,否則返回false。


    isPresent.png

    2.4 ifPersent
    如果不為null就執(zhí)行函數(shù)接口中的內(nèi)容。


    ifPersent.png

    2.5 get
    返回當(dāng)前值,如果為null則報異常


    get.png

    2.6 orElse
    返回當(dāng)前值,如果為null則報異常


    orElse.png

    2.7 orElseGet
    和OrElse類型,只是orGetElse支持函數(shù)式接口來生成other值
    orElseGet.png

    2.8 orElseThrow
    如果有值則返回,沒有值用函數(shù)是接口拋出生成的異常


    orElseThrow.png

    2.9 empty
    創(chuàng)建一個空的Optional對象,沒有任何參數(shù)賦值;


    empty.png
  3. 使用示例

Optional<Object> optionalEmpty = Optional.empty(); // 創(chuàng)建一個空的Optional類

String str = "Hello World";
Optional<String> optionalStr = Optional.of(str); // str不能為空

Optional<String> optionalStr = Optional.ofNullable(str); // str可以為空

boolean present = Optional.ofNullable(null).isPresent(); // present為false

Optional.ofNullable("hello").ifPresent(System.out::println); // 輸出hello
Optional.ofNullable(null).ifPresent(System.out::println); // 什么也不輸出

String str = Optional.ofNullable("hello").get(); // str為hello
Object o = Optional.ofNullable(null).get(); // 拋出異常:java.util.NoSuchElementException: No value present

String s1 = Optional.ofNullable("hello").orElse("string is null"); // s1為hello
Object s2 = Optional.ofNullable(null).orElse("string is null"); // s2為string is null

// 假設(shè)有一個User自定義類型:
User user = null;
User ansUser = Optional.ofNullable(user).orElse(new User("張三", 11, "男", 1234)); // 輸出為new User("張三", 11, "男", 1234)對象


String s1 = Optional.ofNullable("hello").orElse("string is null"); // s1為hello
Object s2 = Optional.ofNullable(null).orElse("string is null"); // s2為string is null

// 假設(shè)有一個User自定義類型:
User user = null;
User ansUser = Optional.ofNullable(user).orElse(new User("張三", 11, "男", 1234)); // 輸出為new User("張三", 11, "男", 1234)對象

String str = Optional.ofNullable("hello").orElseGet(() -> "test"); // str為hello

String s = null;
String str = Optional.ofNullable(s).orElseThrow(RuntimeException::new); // 拋出異常:java.lang.RuntimeException



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容