Java8中加入的Optional类的主要作用是,为了让我们在编程中尽量去规避空指针异常。
我仅仅是为了让自己对学习Optional类的记忆更加深刻而写这边博客,其实它很简单,可工作中还没用到Java8,所以更要记录一下了。
1、5个初始化方法
1):Optional(),构造方法,构造一个value为null的实例
2):empty(), static方法,返回一个empty实例
3):Optional(T value),构造方法,不能传入null,否则抛出空指针异常
4):of(T value),static方法,返回一个实例,调用了Optional(T value)这个构造方法
5):ofNullable(T value),static方法,如果value为null,则返回empty,如果不为空则返回一个有值得实例
2、T get(),获得value的值
3、boolean isPresent(),判断value是否为null,该方法应少使用,因为它跟我们用if去判断是否为null是一样的,意义并不大
4、void ifPresent(Consumer<? super T> consumer),如果value不为null,则进一步处理
5、Optional<T> filter(Predicate<? super T> predicate),如果value为null,则返回当前实例,如果不为空,则运行predicate的方法进行匹配,匹配结 果为true,返回当前实例,为false,返回empty
6、Optional<U> map(Function<? super T, ? extends U> mapper),如果value为null,则返回empty,如果不为null,调用mapper的方法处理之 后返回结果,结果如果为null,则返回empty
7、Optional<U> flatMap(Function<? super T, Optional<U>> mapper),该方法跟6的不同之处在于,调用mapper 的方法之后,如果返回值为null,则抛出空指针异常
8、T orElse(T other),如果value为null,则返回other,不为null则返回value
9、T orElseGet(Supplier<? extends T> other),如果value为null,则返回other的get方法的结果,不为null,则返回value
10、<X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X,如果value不为null,则返回value,如果为null,则抛出指定的异常