1. 程式人生 > 其它 >Java-Optional類

Java-Optional類

到目前為止,臭名昭著的空指標異常是導致Java應用程式失敗的最常見原因。 以前,為了解決空指標異常,Google公司著名的Guava專案引入了Optional類, Guava通過使用檢查空值的方式來防止程式碼汙染,它鼓勵程式設計師寫更乾淨的程式碼。受到Google Guava的啟發,Optional類已經成為Java 8類庫的一部分。 

Optional 類(java.util.Optional) 是一個容器類,它可以儲存型別T的值,代表 這個值存在。或者僅僅儲存null,表示這個值不存在。原來用 null 表示一個值不 存在,現在 Optional 可以更好的表達這個概念。並且可以避免空指標異常。 

Optional類的Javadoc描述如下:這是一個可以為null的容器物件。如果值存在 則isPresent()方法會返回true,呼叫get()方法會返回該物件。

 

Optional提供很多有用的方法,這樣我們就不用顯式進行空值檢測。 

建立Optional類物件的方法: 

  • Optional.of(T t) : 建立一個 Optional 例項,t必須非空; 
  • Optional.empty() : 建立一個空的 Optional 例項  Optional.ofNullable(T t):t可以為null 

判斷Optional容器中是否包含物件: 

  • boolean isPresent() : 判斷是否包含物件 
  • void ifPresent(Consumer consumer) :如果有值,就執行Consumer 介面的實現程式碼,並且該值會作為引數傳給它。 

獲取Optional容器的物件:

  • T get(): 如果呼叫物件包含值,返回該值,否則拋異常 
  • T orElse(T other) :如果有值則將其返回,否則返回指定的other物件。 
  • T orElseGet(Supplier other) :如果有值則將其返回,否則返回由 Supplier介面實現提供的物件。 
  • T orElseThrow(Supplier exceptionSupplier) :如果有值則將其返 回,否則丟擲由Supplier介面實現提供的異常。