提示信息

Java Optional类的使用

暖色 已关注

Java Optional 类是 Java 8 引入的一种容器类,用于处理可能为 null 的值,旨在减少空指针异常(NullPointerException)的可能性。它主要用于表示一个可能存在或不存在的值。使用 Optional 可以使代码更具可读性和意图性。以下是一些 Optional 类的常用用法示例:

创建 Optional 对象

  1. 使用 of 方法

    1. String value = "Hello";
    2. Optional<String> optionalValue = Optional.of(value);

    注意:如果传入的值为 null,会抛出 NullPointerException

  2. 使用 ofNullable 方法

    1. String value = null;
    2. Optional<String> optionalValue = Optional.ofNullable(value);

    这种方法允许传入 null,结果为空的 Optional 对象。

  3. 使用 empty 方法

    1. Optional<String> emptyOptional = Optional.empty();

    创建一个空的 Optional

检查值是否存在

  1. 使用 isPresent 方法

    1. if (optionalValue.isPresent()) {
    2. System.out.println("Value exists: " + optionalValue.get());
    3. }

    检查值是否存在。

  2. 使用 ifPresent 方法

    1. optionalValue.ifPresent(System.out::println);

    如果值存在,执行指定的操作。

提取值

  1. 使用 get 方法

    1. String value = optionalValue.get();

    直接获取值,前提是值必须存在,否则会抛出异常。

  2. 使用 orElse 方法

    1. String value = optionalValue.orElse("Default Value");

    如果值存在,返回值;如果不存在,返回默认值。

  3. 使用 orElseGet 方法

    1. String value = optionalValue.orElseGet(() -> "Default Value From Supplier");

    类似于 orElse,但接受一个供给函数(Supplier)。

  4. 使用 orElseThrow 方法

    1. String value = optionalValue.orElseThrow(() -> new RuntimeException("Value not present"));

    如果值不存在,抛出指定的异常。

过滤和转换

  1. 使用 filter 方法

    1. Optional<String> filteredValue = optionalValue.filter(v -> v.startsWith("H"));

    根据条件过滤值。

  2. 使用 map 方法

    1. Optional<Integer> length = optionalValue.map(String::length);

    如果值存在,应用函数并返回一个新的 Optional

  3. 使用 flatMap 方法

    1. Optional<Integer> flatMappedValue = optionalValue.flatMap(v -> Optional.of(v.length()));

    用于将 Optional 的返回值展开。

Optional 类提供了一个更加优雅和安全的方式来处理可能为空的引用,减少了空指针异常的出现几率,并鼓励开发者显式处理空值的情况。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
暖色 关注 已关注

最近一次登录:2024-11-20 02:56:09   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图