Java 9中Optional.or()方法的重要性?

在Java 9中,一些静态方法:stream()or(),和ifPresentOrElse()已添加到Optional <T> 类。Optional 类的引入解决了空指针异常

Optional.or()方法返回的可选 描述值,如果一个值存在,否则返回一个可选产生通过供给功能。 

语法

public Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)

示例

import java.util.Optional;
import java.util.function.Supplier;

public class OptionalOrTest {
   public static void main(String args[]) {
      Optional<String> optional = Optional.of("nhooo");
      Supplier<Optional<String>> supplierString = () -> Optional.of("Not Present");
      optional = optional.or(supplierString);
      optional.ifPresent(x -> System.out.println("Value: " + x));
      optional = Optional.empty();
      optional = optional.or(supplierString);
      optional.ifPresent(x -> System.out.println("Value: " + x));
   }
}

输出结果

Value: nhooo
Value: Not Present