Java 8 開始新增的 Optional 類 - 建立 Optional 物件
阿新 • • 發佈:2022-05-17
建立一個 Optional 物件
有下面的一些方法可以被用來建立 Optional 物件。
empty 靜態方法
如果你想建立一個空的 Optional 的物件,我們簡單的使用 Optional 類提供的 empty() 靜態方法:
@Test
public void whenCreatesEmptyOptional_thenCorrect() {
Optional<String> empty = Optional.empty();
assertFalse(empty.isPresent());
}
需要注意的是,我們使用 isPresent()
如果我們建立的 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