空指针异常处理 Optional类

Optional各方法的作用

public static Optional of(T value)

获取一个Java对象的Optional对象,如果value为null,会抛出NullPointerException,不推荐使用

public static Optional ofNullable(T value)

与上一个of方法类似,不同之处在于如果value为空时,会返回一个空的Optional(对象里的value为null)

public T get()

获取Optional中的value, value为空时会抛出NoSuchElementException

public boolean isPresent()

判断Optional中的value存在,不为null时返回true;为null时返回false

public void ifPresent(Consumer consumer)

如果Optional中的value存在,不为null时, 则对value传入consumer.accept()进行处理;否则什么也不做

public Optional filter(Predicate predicate)

过滤操作,如果Optional中的value不为null,则根据条件过滤;否则什么也不做

public Optional map(Function mapper)

转化操作,如果Optional中的value不为null,则进行转化;否则什么也不做

public Optional flatMap(Function> mapper)

转化操作,如果Optional中的value不为null,则进行转化;否则什么也不做, 与map的不同之处在于,map的返回值Optional对象是在map方法里面自动封装好了。而flatMap方法需要在自己的实现逻辑中封装成Optional

public T orElse(T other)

//Optional中的value不为null, 返回value;否则返回传入的other
public T orElse(T other) {
  return value != null ? value : other;
}

public T orElseGet(Supplier other)

//Optional中的value不为null, 返回value;否则返回传入的other的value
public T orElseGet(Supplier other) {
     return value != null ? value : other.get();
}

public T orElseThrow(Supplier exceptionSupplier) throws X

//Optional中的value不为null, 返回value;否则返回抛出传入的异常
public  T orElseThrow(Supplier exceptionSupplier) throws X {
    if (value != null) {
        return value;
    } else {
        throw exceptionSupplier.get();
    }
}

使用方法

你可能感兴趣的:(JAVA,java,spring,经验分享)