Optional 对象是一种包装器对象,要么包装对象引用,要么null
Optional<String> optionalS = Optional.of(null); // 添加值为null时,抛出异常
Optional<String> optionalSn = Optional.ofNullable(null); // 添加值为null时,产生一个空的
Optional<String> empty = Optional.empty(); // 产生一个空的
String s = optionalSn.get(); // 获取值
// optional为null时,设置默认值
String orElse = empty.orElse("1234");
String orElseGet = empty.orElseGet(()->"1234"); // orElseGet(Supplier<? extends T> other)
// optional为null时,抛出异常
String orElseThrow = empty.orElseThrow(() -> new Exception());//orElseThrow(Supplier<? extends X> exceptionSupplier) throws X
boolean isPresent() // 如果不为null,返回true
// void ifPresent(Consumer<? super T> consumer) // 如果不为null,执行拉姆达表达式
// Optional<String> optionalS = Optional.of("kosdf");
optionalS.ifPresent(s->System.out.println("s = " + s));
// map(Function<? super T, ? extends U> mapper)
Optional<String> u = optionalSn.map((s) -> {return s+"hello";}); // lambda返回Optianal值,如果optionalSn有值就获取
// filter(Predicate<? super T> predicate)
Optional<Object> o = optionalS.filter((s) -> {
System.out.println("s = " + s);
return true; // 返回true,返回当前optional值,返回false,返回空的optional值
});
System.out.println("o = " + o);
// flatMap(Function<? super T, Optional<U>> mapper)
Optional<Object> op = optionalS.flatMap((par) -> {
par = "kongjks";
return Optional.of(par); // 返回optional值
});
System.out.println(op);