欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Optional类

程序员文章站 2022-01-09 09:49:54
...

一. 前言

Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException)

我们从一个简单的用例开始,在 Java 8 之前,任何访问对象方法或属性的调用都可能导致 NullPointerException:

String isocode = user.getAddress().getCountry().getIsocode().toUpperCase();

在这个小示例中,如果我们需要确保不触发异常,就得在访问每一个值之前对其进行明确地检查:

if (user != null) {
    Address address = user.getAddress();
    if (address != null) {
        Country country = address.getCountry();
        if (country != null) {
            String isocode = country.getIsocode();
            if (isocode != null) {
                isocode = isocode.toUpperCase();
            }
        }
    }
}

你看到了,这很容易就变得冗长,难以维护。
为了简化这个过程,我们来看看用 Optional 类是怎么做的。从创建和验证实例,到使用其不同的方法,并与其它返回相同类型的方法相结合,下面是见证 Optional 奇迹的时刻。

二. Optional

1. 创建 Optional 实例

Optional对象可能包含值,也可能为空,有以下三种创建方法

  • 使用 empty() 方法创建一个空的 Optional。
Optional<User> emptyOpt = Optional.empty();
emptyOpt.get();
  • 使用 of() 方法创建包含值的 Optional,不能传入null类型,会抛出 NullPointerException:
Optional<User> opt = Optional.of(user);
  • 使用 ofNullable() 方法创建包含值的 Optional,可以传入null类型
Optional<User> opt = Optional.ofNullable(user);
相关标签: Optional