Java 8 的 Optional 类如何处理空值

发布时间:2025-01-22 15:26:35 作者:小樊
来源:亿速云 阅读:102

Java 8 的 Optional 类是一个可以为 null 的容器对象

  1. 创建 Optional 对象:
Optional<String> optional = Optional.ofNullable(getValueThatMayBeNull());

这里,getValueThatMayBeNull() 是一个可能返回 null 的方法。我们使用 Optional.ofNullable() 方法创建一个 Optional 对象,如果值为 null,则创建一个空的 Optional 对象。

  1. 检查值是否存在:
if (optional.isPresent()) {
    System.out.println("Value is present: " + optional.get());
} else {
    System.out.println("Value is not present");
}

使用 isPresent() 方法检查 Optional 对象中是否存在值。如果存在,则使用 get() 方法获取值。注意,get() 方法在值为 null 时会抛出 NoSuchElementException。

  1. 获取值(如果存在):
String value = optional.orElse("default value");
System.out.println("Value: " + value);

使用 orElse() 方法获取 Optional 对象中的值,如果值为 null,则返回指定的默认值。

  1. 链式方法调用:
String value = optional.orElse("default value").orElse("another default value");
System.out.println("Value: " + value);

orElse() 方法返回第一个非空值。在这个例子中,如果 optional 为空,则返回 “default value”,否则返回 optional 中的值。如果 optional 中的值也为空,则返回 “another default value”。

  1. 在流中使用 Optional:
List<String> list = Arrays.asList("a", null, "c");

List<String> filteredList = list.stream()
        .filter(Objects::nonNull)
        .map(Optional::ofNullable)
        .filter(Optional::isPresent)
        .map(Optional::get)
        .collect(Collectors.toList());

System.out.println(filteredList); // Output: [a, c]

在这个例子中,我们首先过滤掉 null 值,然后使用 Optional::ofNullable 将每个非空值包装在 Optional 对象中。接下来,我们使用 filter()isPresent() 方法检查 Optional 对象中是否存在值,最后使用 map()get() 方法获取值。

推荐阅读:
  1. 利用Java8 Optional避免空指针异常的示例
  2. Java8 Optional原理及用法解析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Java 枚举类型可以包含空值吗

下一篇:Java 中空指针异常与空值有什么区别

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》