JDK8——Optional

Posted 小豆芽2333

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK8——Optional相关的知识,希望对你有一定的参考价值。

Optional

A container object which may or may not contain a non-null value. If a value is present, isPresent() will return true and get() will return the value.

容器对象,可能包含也可能不包含非null值。如果存在值,则isPresent()将返回true,get()将返回该值。

Additional methods that depend on the presence or absence of a contained value are provided, such as orElse() (return a default value if value not present) and ifPresent() (execute a block of code if the value is present).

附带方法依赖于是否存在包含值的方法,例如orElse()(如果值不存在则返回默认值)和ifPresent()(如果值存在则执行代码块)。

This is a value-based class; use of identity-sensitive operations (including reference equality (==), identity hash code, or synchronization) on instances of Optional may have unpredictable results and should be avoided.

这是一个基于值的类,使用身份敏感的操作(包括引用相等(==),标识哈希码或同步),对于Optional的实例可能会产生不可预测的结果,应该避免。

 

常用的一些方法和场景

isPresent()

Return true if there is a value present, otherwise false.

如果有值就返回true,如果没有值就返回false,可以用于单元测试的assert判断,也可以用于对返回值对校验。

get()

If a value is present in this Optional, returns the value, otherwise throws NoSuchElementException.

如果Optional内有值,则返回值,否则抛出异常NoSuchElementException,可以用于返回值是否为空校验,前端采用异常拦截器进行拦截处理后返回。

orElseThrow(Supplier<? extends X> exceptionSupplier)

Return the contained value, if present, otherwise throw an exception to be created by the provided supplier.

如果前面对计算结果存在,返回包含的值,否则就抛出一个自定义异常,由异常拦截器统一处理后返回。

ofNullable(T value)

Returns an Optional describing the specified value, if non-null, otherwise returns an empty Optional.

如果指定值非空,则返回指定值;如果为空,则返回空的Optional,可以用于返回值。

 

学习资料:JDK8官网

 

以上是关于JDK8——Optional的主要内容,如果未能解决你的问题,请参考以下文章

JDK8,Optional

JDK8之Optional新特性

JDK8系列之Optional API应该怎样用?

JDK8的Optional类

JDK8新特性:使用Optional:解决NPE问题的更干净的写法

JDK8 Optional 用法记录