Optionals
在 Java 中,Optional类是一个用于处理可能为 null 值的容器类。
它是 Java 8 引入的,旨在解决空指针异常的问题。
Optional 类的设计目的是帮助程序员明确地处理可能为 null的情况,从而减少空指针异常的发生。
Optional 类封装了一个值,可以是任何类型,包括基本数据类型、对象类型等。
它提供了一些方法来检查值是否存在、获取值、或者在值不存在时执行一些替代操作。
以下是 Optional 类的一些常用方法:
of(T value):创建一个包含指定值的Optional实例。ofNullable(T value):如果指定值不为null,则创建一个包含该值的Optional实例;否则创建一个空的Optional实例。isPresent():判断Optional中是否包含值。get():获取Optional中的值,如果值不存在会抛出NoSuchElementException异常。orElse(T other):如果Optional中包含值,则返回该值;否则返回指定的默认值。orElseGet(Supplier<? extends T> other):- 如果
Optional中包含值,则返回该值; - 否则通过提供的
Supplier函数生成一个默认值。
- 如果
orElseThrow(Supplier<? extends X> exceptionSupplier):- 如果
Optional中包含值,则返回该值; - 否则通过提供的
Supplier函数抛出一个异常。
- 如果
ifPresent(Consumer<? super T> consumer):如果Optional中包含值,则通过提供的Consumer函数执行指定的操作。
示例
public class OptionalDemo {
public static void main(String[] args) {
String str = null;
Optional<String> optionalStr = Optional.ofNullable(str);
// 如果 optionalStr 中有值,则打印其长度;否则不执行操作。
optionalStr.ifPresent(s -> System.out.println("Length of value: " + s.length()));
// 获取 optionalStr 中的值,如果不存在则返回 "Default Value"
String value = optionalStr.orElse("Default Value");
System.out.println("Value: " + value);
// 使用方法引用
optionalStr = Optional.ofNullable("Hello, Optional!");
optionalStr.ifPresent(System.out::println);
}
}
- 首先创建了一个可能为
null的字符串str,然后使用Optional.ofNullable()方法将其包装成Optional实例。 - 接着,通过
ifPresent()方法检查是否有值,并执行相应的操作。 - 使用
orElse()方法获取值,如果值不存在则返回默认值。 - 最后展示了如何使用方法引用来处理存在值的情况。