JDK1.8新特性 Optional 类的使用

Optional 类是 Java 8 中引入的一个用于解决空指针异常问题的工具类。它可以包含或不包含非空值,并提供了一系列方法来处理可能为空的值。以下是一个详细的介绍和示例代码

import java.util.Optional;

public class OptionalExample {
    public static void main(String[] args) {
        // 创建一个包含非空值的Optional
        Optional<String> optionalWithValue = Optional.of("Hello, world!");
        System.out.println("Optional with value: " + optionalWithValue); // Optional with value: Optional[Hello, world!]

        // 创建一个空的Optional
        Optional<String> optionalEmpty = Optional.empty();
        System.out.println("Empty Optional: " + optionalEmpty); // Empty Optional: Optional.empty

        // 使用ofNullable方法创建一个Optional,允许值为null
        String nullableValue = null;
        Optional<String> optionalNullable = Optional.ofNullable(nullableValue);
        System.out.println("Nullable Optional: " + optionalNullable); // Nullable Optional: Optional.empty

        // 检查Optional是否包含值
        if (optionalWithValue.isPresent()) {
            System.out.println("Optional with value is present."); // Optional with value is present.
        } else {
            System.out.println("Optional with value is empty.");
        }

        // 获取Optional中的值,如果存在
        if (optionalWithValue.isPresent()) {
            String value = optionalWithValue.get();
            System.out.println("Value in optional: " + value); // Value in optional: Hello, world!
        }

        // 如果值存在则执行某个操作
        optionalWithValue.ifPresent(val -> System.out.println("Value in optional: " + val)); // Value in optional: Hello, world!

        // 使用orElse方法获取值,如果Optional为空则返回默认值
        String valueOrDefault = optionalEmpty.orElse("Default Value");
        System.out.println("Value or default: " + valueOrDefault); // Value or default: Default Value

        // 使用orElseGet方法获取值,如果Optional为空则通过Supplier生成值
        String valueOrGenerated = optionalEmpty.orElseGet(() -> generateValue());
        System.out.println("Value or generated: " + valueOrGenerated); // Value or generated: Generated Value

        // 使用orElseThrow方法获取值,如果Optional为空则抛出异常
        try {
            String valueOrThrow = optionalEmpty.orElseThrow(() -> new IllegalArgumentException("Value is empty"));
        } catch (IllegalArgumentException e) {
            System.out.println("Exception thrown: " + e.getMessage()); // Exception thrown: Value is empty
        }
    }

    // 用于生成默认值的方法
    private static String generateValue() {
        return "Generated Value";
    }
}

在这个示例中,我们展示了如何创建包含非空值和空值的 Optional,以及如何检查 Optional 是否包含值,获取 Optional 中的值,执行操作,以及获取默认值或者抛出异常等操作。通过使用 Optional,我们可以更加安全和简洁地处理可能为空的值,避免了空指针异常的发生。

  • 15
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值