对于业务代码,写的最多的估计就是if{}...else{}这xx玩意了,有时候又想能不能减小几行,可是这就可能在上线项目时,(不是咱们的问题,是数据的问题)形成报出空指针异常这种xx状况。java
可是在jdk8及以上版本,有了Optional,真的可以极大地避免这种状况的出现。app
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; }
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