【Java8新特性】- Optional應用

Java8新特性 - Optional應用

生命不息,寫作不止 繼續踏上學習之路,學之分享筆記 總有一天我也能像各位大佬一樣 一個有夢有戲的人 @怒放吧德德分享學習心得,歡迎指正,大家一起學習成長!

【Java8新特性】- Optional應用

文章插圖
目錄
  • Java8新特性 - Optional應用
    • 簡介
    • Optional判斷是否為空
    • Optional設定默認值
    • Optional過濾
    • 類方法
簡介【【Java8新特性】- Optional應用】Optional 類是一個可以為null的容器對象 。如果值存在則isPresent()方法會返回true,調用get()方法會返回該對象 。Optional 是個容器:它可以保存類型T的值,或者僅僅保存null 。Optional提供很多有用的方法,這樣我們就不用顯式進行空值檢測 。Optional 類的引入很好的解決空指針異常 。
Optional判斷是否為空optional提供了兩種方法,一個是ofNullable(args),這個是可以傳遞空對象 , 并且不會出現空指針異常;另一個是of(args),這個一旦傳遞空對象,就會報空指針異常 。
public static void main(String[] args) {Integer integer = null;Optional<Integer> optionalInteger = Optional.ofNullable(integer);Optional.of(integer);}在ofNullable方法是不會報出空指針,而在of方法時,對象為空則會空指針異常 。
【Java8新特性】- Optional應用

文章插圖
通過Optional的ofNullable可以判斷對象是否為空 , 并且能夠返回一個Optional的對象,這個對象可以通過get()方法來得到相應的類型,并且二者的hashcode是一致的 。
Student student = new Student("lyd", 99);Optional<Student> optionalInteger = Optional.ofNullable(student);Student i = optionalInteger.get();System.out.println("原本的hashcode: " + student.hashCode());System.out.println("Optional的hashcode: " + i.hashCode());結果:
【Java8新特性】- Optional應用

文章插圖
通過Optional.ofNullable(student).isPresent() 來判空,isPresent結果為true表示不為空 , isPresent返回為false表示為空 。
Optional設定默認值Option提供了可以設置默認值的方法,可以令為空的對象初始化默認值 。
public static void main(String[] args) {Integer num = null;Integer number = 18;Integer orElse = Optional.ofNullable(num).orElse(12);Integer anElse = Optional.ofNullable(number).orElse(12);System.out.println("orElse: " + orElse);System.out.println("anElse: " + anElse);}結果輸出
orElse: 12anElse: 18Optional過濾optional可以實現參數過濾,可以自己重寫過濾規則 。與Stream流過濾一樣 , 也是通過實現匿名內部類new Predicate得到 。
public static void main(String[] args) {Integer n = 18;Optional<Integer> num = Optional.ofNullable(n);Integer integer = num.filter(number -> number > 5).get();System.out.println(integer);}類方法
【Java8新特性】- Optional應用

文章插圖
工作繁忙也需要學習 。
創作不易 , 如有錯誤請指正,感謝觀看!記得點贊哦!

    推薦閱讀