Optional
Optional 是 Java 8 中引入的一个容器类,用于表示一个值存在或不存在的情况。它可以用于解决空指针异常(NullPointerException)的问题,让代码更加健壮和易读。
Optional 的主要作用是将值包装起来,并提供一些方法来安全地访问这个值或者在值不存在的情况下提供默认值。当使用 Optional 时,我们可以避免手动进行 null 检查以及判断代码中的 null 值,从而使代码更简洁、可读性更好。
常用方法
Optional of(T value):为非null的值创建一个Optional,如果值为null,则会抛出NullPointerException
Optional ofNullable(T value):为指定的值创建一个Optional,如果指定的值为null,则返回一个空的Optional
T get():如果Optional有值则将其返回,否则抛出NoSuchElementException
T orElse(T other):如果该 Optional 包含一个非 null 的值,则返回该值,否则返回 other。
Optional empty():返回一个空的 Optional。
boolean isPresent():如果该 Optional 包含一个非 null 的值,则返回 true,否则返回 false。
T orElseGet(Supplier<? extends T> other):如果该 Optional 包含一个非 null 的值,则返回该值,否则返回 other 提供的值。
优雅判空
使用 Optional 类可以让我们更加优雅地进行空值判定,以下是几种常见的优雅判空方式:
1、使用 ofNullable 方法创建一个 Optional 对象,并使用 ifPresent 方法处理非空情况:
Optional<String> optionalValue = Optional.ofNullable(value);
optionalValue.ifPresent(val -> {
// 处理非空情况
});
2、使用 orElse 方法指定一个默认值,在值为空时返回默认值:
String result = Optional.ofNullable(value).orElse("Default Value");
3、使用 orElseGet 方法通过函数式接口提供一个生成默认值的逻辑:
String result = Optional.ofNullable(value).orElseGet(() -> generateDefaultValue());
4、使用 map 方法对非空值进行操作,返回一个 Optional 对象:
Optional<String> optionalResult = Optional.ofNullable(value).map(val -> val.toUpperCase());
5、使用 filter 方法过滤非空值,并基于某个条件返回一个新的 Optional 对象:
Optional<String> optionalResult = Optional.ofNullable(value).filter(val -> val.length() > 5);