Optional

Optional 是 Java 8 提供的为了解决 null 安全问题的一个 API。 提供了多种方法来处理可能为 null 的值,从而减少空指针异常的风险。

使用 Optional,我们可以把下面的代码进行改写。

public static String getName(User user) {
  if(user ==null || user.name == null) {
    return "Unknown";
  }
  return user.name;
}
// 🅱️ Bad
public static String getName(User user) {
  Optional<User> userOptional = Optional.ofNullable(user);
  if(!user.isPresent()) {
    return "Unknown";
  }
  return user.get().getName();
}

// ✅ Good
public static String getName(User user) {
  return Optional.ofNullable(user).map(User::getName).orElse("Unknown");
}

构造 Optional 的三种方式

常用 API

ifPresent()

如果存在值,则执行指定的操作。

map()

map 方法能够返回另外一个 Optional 对象。

orElse()

如果存在指,返回指定的值,反之返回默认值。

orElseGet()

如果存在指,返回指定的值,调用 other 并返回该调用结果。

orElseThrow()

如果存在指,返回指定的值,反之抛出指定的异常。

最后更新于

这有帮助吗?