1. 程式人生 > >講講Java8的Optional類

講講Java8的Optional類

# 前言 Java 8中引入了 `Optional` 類來解決 `NullPointerException` 與繁瑣的 `null` 檢查,該類首次出現在 `Guava`。Java 8 才成為類庫中的一部分。 # 入門 `Optional` 是一個封裝值的類,用於儲存型別為 `T` 的值;本質上,`Optional` 就是一個容器。 舉例來說,一個人可能有車也可能沒有,那麼 `Person` 類內部 `car` 變數就不應該宣告為 `Car`,當變數存在時,`Optional` 類只是對 `Car` 的簡單封裝。變數不存在時,會使用 `Optional.empty()` 方法返回空的 `Optional` 物件。如下所示: ![](https://img2020.cnblogs.com/blog/2243394/202101/2243394-20210113100458164-1765643102.png) 但是 `null` 引用和 `Optional.empty()` 有什麼本質區別?從語義上,它們可以當成一回事兒,但實際上差別非常大:如果嘗試解引用一個 `null`,一定會觸發 `NullPointerException`,不過使用 `Optional.empty()` 是一個有效的物件。 下面我們來看一下 `Optional` 提供的功能。 # 建立 說到 `Optional` 的功能,我們首先要了解 `Optional` 例項的建立。 ## 空Optional 正如前文提到,你可以通過靜態工廠方法 `Optional.empty`,建立一個空的 `Optional` 物件: ```java