Optional 类

Optional类是Java8为解决空指针异常而引入的容器,它提供了of,empty,ofNullable等构造方法。通过isPresent检查值是否存在,get获取值,orElse、orElseGet、orElseThrow提供默认值或抛出异常。此外,map和filter方法支持函数式编程,增强代码安全性和可读性。
摘要由CSDN通过智能技术生成

Optional 类是 Java 8 引入的一个容器类,用于表示一个值存在或不存在的情况。它的设计目的是为了解决空指针异常(NullPointerException)问题,并提供更好的代码可读性和安全性。

创建 Optional 实例

可以使用以下方法来创建 Optional 实例:

  • Optional.of(value): 创建一个包含指定值的 Optional 实例。如果值为 null,则抛出 NullPointerException。
Optional<String> optionalValue = Optional.of("Hello");
  • Optional.empty(): 创建一个空的 Optional 实例。
Optional<String> emptyOptional = Optional.empty();
  • Optional.ofNullable(value): 创建一个包含指定值的 Optional 实例。如果值为 null,则创建一个空的 Optional 实例。
Optional<String> nullableOptional = Optional.ofNullable(null);

判断和获取 Optional 的值

可以使用以下方法来判断和获取 Optional 中的值:

  • isPresent(): 判断 Optional 是否包含值。
if (optionalValue.isPresent()) {
    // Optional 包含值的逻辑
}
  • get(): 获取 Optional 中的值。注意在调用前先判断 Optional 是否包含值。
String value = optionalValue.get();

获取 Optional 的值或默认值

可以使用以下方法来获取 Optional 中的值或默认值:

  • orElse(defaultValue): 获取 Optional 中的值,如果不存在值,则返回指定的默认值。
String valueOrDefault = nullableOptional.orElse("Default Value");
  • orElseGet(supplier): 获取 Optional 中的值,如果不存在值,则通过 Supplier 函数提供一个默认值。
String valueOrDefault = nullableOptional.orElseGet(() -> generateDefaultValue());
  • orElseThrow(exceptionSupplier): 获取 Optional 中的值,如果不存在值,则抛出指定的异常。
String value = optionalValue.orElseThrow(() -> new RuntimeException("Value not found"));

使用 Optional 的其他操作

Optional 类还提供了一些其他操作,例如:

  • map(mapper): 对 Optional 中的值进行映射转换。
Optional<String> mappedValue = optionalValue.map(str -> str.toUpperCase());
  • filter(predicate): 根据指定条件过滤 Optional 中的值。
Optional<String> filteredValue = optionalValue.filter(str -> str.length() > 5);
  • flatMap(mapper): 对 Optional 中的值进行映射转换,并将结果打平。
Optional<String> flatMappedValue = optionalValue.flatMap(str -> Optional.ofNullable(str.toUpperCase()));

以上是 Optional 类的基本用法和常用操作,通过合理运用 Optional 类,可以提升代码的可读性和健壮性,减少空指针异常的发生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值