Java Optional 類的使用
阿新 • • 發佈:2019-01-05
使用 Optional 類可以通過檢查空值來防止程式碼汙染,也可以根據條件過濾非空值。
import java.util.NoSuchElementException; import java.util.Optional; public class OptionalDemo { public static void main(String[] args) { Optional<String> name = Optional.of("Sanaulla"); Optional empty = Optional.ofNullable(null); if (name.isPresent()) { System.out.println(name.get()); } try { System.out.println(empty.get()); } catch (NoSuchElementException ex) { System.out.println(ex.getMessage()); } // 如果有值,則呼叫引數 Consumer name.ifPresent((value) -> { System.out.println("The length of the value is: " + value.length()); }); // 有值則返回,否則返回預設值或生成的預設值 System.out.println(empty.orElse("There is no value present!")); System.out.println(name.orElse("There is some value!")); System.out.println(empty.orElseGet(() -> "Default Value")); System.out.println(name.orElseGet(() -> "Default Value")); System.out.println("----------------------"); // Map:如果有值則執行方法 Optional<String> upperName = name.map((value) -> value.toUpperCase()); System.out.println(upperName.orElse("No value found")); upperName = name.flatMap((value) -> Optional.of(value.toUpperCase())); System.out.println(upperName.orElse("No value found")); // Filter:對 Optional 例項的值進行過濾 Optional<String> longName = name.filter((value) -> value.length() > 6); System.out.println(longName.orElse("The name is less than 6 characters")); Optional<String> anotherName = Optional.of("Sana"); Optional<String> shortName = anotherName.filter((value) -> value.length() > 6); System.out.println(shortName.orElse("The name is less than 6 characters")); } }