System.out.println("optional2失敗了"); } try { Optional<Integer> optional3 = Optional.ofNullable(value1); System.out.println("optional3創建了"); }catch (Exception e){ System.out.println("optional3失敗了"); } try { Optional<Integer> optional4 = Optional.of(value2); System.out.println("optional4創建了"); }catch (Exception e){ System.out.println("optional4失敗了"); } try { Optional<Integer> optional5 = Optional.ofNullable(value2); System.out.println("optional5創建了"); }catch (Exception e){ System.out.println("optional5失敗了"); }}
文章插圖
2.3.3 值獲取方法1)源碼
public T get() {if (value =https://www.huyubaike.com/biancheng/= null) {throw new NoSuchElementException("No value present");}return value;}
3)測試代碼
public static void main(String[] args) {Integer value1 = null;Integer value2 = 1;Optional<Integer> optional1 = Optional.ofNullable(value1);Optional<Integer> optional2 = Optional.of(value2);try {Integer result=optional1.get();System.out.println("optional1的值是:"+result);}catch (Exception e){System.out.println("optional1的值獲取失敗,原因:"+e.getMessage());}try {Integer result=optional2.get();System.out.println("optional2的值是:"+result);}catch (Exception e){System.out.println("optional2的值獲取失敗,原因:"+e.getMessage());}}

文章插圖
2.3.4 判斷方法1)源碼
public boolean isPresent() {return value != null;}public void ifPresent(Consumer<? super T> consumer) {if (value != null)consumer.accept(value);}public T orElse(T other) {return value != null ? value : other;}public T orElseGet(Supplier<? extends T> other) {return value != null ? value : other.get();}public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X {if (value != null) {return value;} else {throw exceptionSupplier.get();}}
- isPresent(): 判斷optional是否為空 , 如果空則返回false , 否則返回true
- ifPresent(Consumer c): 如果optional不為空 , 則將optional中的對象傳給Comsumer函數
- orElse(T other): 如果optional不為空 , 則返回optional中的對象;如果為null , 則返回 other 這個對象 。
經驗總結擴展閱讀
- Go 源碼解讀|如何用好 errors 庫的 errors.Is 與 errors.As() 方法
- Optional 常用方法總結
- 走到盡頭結局解析?
- 西西里的美麗傳說解析?
- LOL血港開膛手派克技能解析及玩法技巧?
- 王者榮耀孫策技能解析?
- 英魂之刃李探花出裝打法解析?
- 王者榮耀中鐘馗技能解析以及如何連招?
- 英雄聯盟lol青鋼影卡蜜爾技能玩法解析?
- 野荷塘網站源碼,野荷塘網站模板哪里可以買到?
