JDK8 Java 中遇到null 和为空的状况,使用Optional来解决。

对于业务代码,写的最多的估计就是if{}...else{}这xx玩意了,有时候又想能不能减小几行,可是这就可能在上线项目时,(不是咱们的问题,是数据的问题)形成报出空指针异常这种xx状况。java

可是在jdk8及以上版本,有了Optional,真的可以极大地避免这种状况的出现。app

JDK 提供三个静态方法来构造一个 Optional

  1. Optional.of(T value) :传入的参数不能为null
  2. Optional.ofNullable(T value) :与of方法的区别是,能够传入为null的参数,如若为null则调用Optional.empty()
Public static  <T> Optional <T> ofnullable (T value)

return value null empty (): of (value) i

    3.Optional.empty():该方法用来构造一个空的 Optional,即该 Optional 中不包含值函数

private static final Optional<?> EMPTY = new Optional<>();

private final T value;

private Optional(){
    this.value = null;
}

Optional 提供的经常使用方法

  • orElse: 若是Optional 中有值则将其返回,不然返回 orElse 方法传入的参数。
User user = Optional
        .ofNullable(getUserById(id))
        .orElse(new User(0, "Unknown"));
        
System.out.println("Username is: " + user.getUsername());
  • orElseThrow:orElseThrow 与 orElse 方法的区别在于,orElseThrow 方法当 Optional 中有值的时候,返回值;没有值的时候会抛出异常this

  • map:若是当前 Optional 为 Optional.empty,则依旧返回 Optional.empty;不然返回一个新的 Optional,该 Optional 包含的是:函数 mapper 在以 value 做为输入时的输出值,并且咱们能够屡次使用 map 操做。spa

相关文章
相关标签/搜索