三种构造方式: Optional.of(obj)、Optional.ofNullable(obj) 、Optional.empty()。


//存在即返回, 无则提供默认值
return user.orElse(null);  //而不是 return user.isPresent() ? user.get() : null;

//存在即返回, 无则由函数来产生
return user.orElseGet(() -> fetchUser()); //而不要 return user.isPresent() ? user: fetchUser();

//存在才对它做点什么
user.ifPresent(System.out::println);
//而不要如下
if (user.isPresent()) {
  System.out.println(user.get());
}

//多个级联间自动加非空校验
return Optional.of(new User())
            .map(User::getName)
            .map(String::toUpperCase)
            .orElse("zyf");
//Java8之前, 每一级调用的展开都需要放一个 null 值的判断。
User user = .....
if(user != null) {
  String name = user.getUsername();
  if(name != null) {
    return name.toUpperCase();
  } else {
    return null;
  }
} else {
  return null;
}

//orElseThrow
Optional<Integer> num = Optional.of(1);
num
    .filter(s -> s < 0)
    .orElseThrow(() -> new RuntimeException("zyf"));

注:
Optional.isPresent() 更应该被视为一个私有方法。


重构地球
68 声望4 粉丝

rust-zero


« 上一篇
SLF4J
下一篇 »
高并发 - 基础