public static void main(String[] args) {
//Optional<User> o1 = Optional.of(null); //直接报错
Optional<User> o2 = Optional.of(new User("jwh")); //正常
Optional<User> o3 = Optional.empty(); // NoSuchElementException get()报错
Optional<User> o4 = Optional.ofNullable(new User("jwh")); // 正常 等价于o2
Optional<User> o5 = Optional.ofNullable(null); // NoSuchElementException get()报错 等价于o3
//建议用ifPresent , 不为null的时候才执行
o4.ifPresent(user -> user.getName());
//建议用orElseGet , 只有为null时 才执行默认方法
o4.orElse(new User());
System.out.println("===================");
o4.orElseGet(() -> new User());
// 控制台输出
// new一个user
// ===================
o5.orElse(new User());
System.out.println("===================");
o5.orElseGet(() -> new User());
// 控制台输出
// new一个user
// ===================
// new一个user
//可以用来抛异常 null时,抛出异常
User result = o5.orElseThrow( () -> new IllegalArgumentException());
//map 结果被包装成Optional flatMap 结果不会包装
//filter 过滤
}