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()
方法获取值,如果值不存在则返回默认值。 - 最后使用方法引用来处理存在值的情况。