1. 程式人生 > 其它 >Java 8 開始新增的 Optional 類 - 建立 Optional 物件

Java 8 開始新增的 Optional 類 - 建立 Optional 物件

建立一個 Optional 物件

有下面的一些方法可以被用來建立 Optional 物件。

empty 靜態方法

如果你想建立一個空的 Optional 的物件,我們簡單的使用 Optional 類提供的 empty() 靜態方法:

    @Test
    public void whenCreatesEmptyOptional_thenCorrect() {
        Optional<String> empty = Optional.empty();
        assertFalse(empty.isPresent());
    }

需要注意的是,我們使用 isPresent()

 方法來檢查 Optional 物件中值的情況。

如果我們建立的 Optional 物件有值的話,isPresent() 方法將會返回 True,否則 isPresent() 這個方法將會返回 False。

我們將會在本頁面的後續部分繼續討論有關 isPresent() 方法的使用。

of 靜態方法

下面的方法將會建立一個 Optional 物件,在建立這個物件的時候,我們使用了另外的一個靜態方法 of() 來進行建立:

    @Test
    public void givenNonNull_whenCreatesNonNullable_thenCorrect() {
        String name = "HoneyMoose";
        Optional<String> opt = Optional.of(name);
        assertTrue(opt.isPresent());
    }

需要注意的是,如果你使用 of 靜態方法建立一個 Optional 物件的時候,你還是有機會面臨空物件(NullPointerException)異常。

考察下面的程式碼,如果執行的話,你還是會命令到空物件異常,如果你初始化 Optional 為空的話。

    @Test(expected = NullPointerException.class)
    public void givenNull_whenThrowsErrorOnCreate_thenCorrect() {
        String name = null;
        Optional.of(name);
    }

ofNullable 靜態方法

有時候,我們希望在我們的程式碼中使用 Null 值。

這個時候,你可以使用靜態方法 ofNullable() ,這個靜態方法將會告訴 Optional 物件是可能為 Null 的。

    @Test
    public void givenNonNull_whenCreatesNullable_thenCorrect() {
        String name = "HoneyMoose";
        Optional<String> opt = Optional.ofNullable(name);
        assertTrue(opt.isPresent());
    }

通過上面的操作,我們可以在 Optional 使用 null,這樣的話,如果你對 Optional 進行初始化的時候,不會因為null 的使用而導致異常。

    @Test
    public void givenNull_whenCreatesNullable_thenCorrect() {
        String name = null;
        Optional<String> opt = Optional.ofNullable(name);
        assertFalse(opt.isPresent());
    }
https://www.ossez.com/t/java-8-optional-optional/13965