利用Optional解决空指针异常

本文介绍了Java 8引入的Optional类,用于解决NullPointerException问题。通过案例解析了Optional的基本用法,如of()、ofNullable()、get()、isPresent()、orElse()等方法,以及map()、flatMap()和filter()用于转换和过滤值。最后,探讨了Optional的源码和在实际案例中的优化应用,强调了Optional在减少代码中的NullPointerExceptions和提高代码可读性方面的作用。
摘要由CSDN通过智能技术生成

背景介绍

Java 8 引入了一个十分实用的 Optional 类,它主要是为了解决空指针异常(NullPointerException)。当我们对对象的属性进行检查,判断它的值是否为期望的格式,最终却发现我们查看的并不是一个对象,而是一个空指针,它会立即抛出一个让人厌烦的 NullPointerException 异常。

本质上,Optional 类是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。

案例

从一个简单的用例开始。在 Java 8 之前,任何访问对象方法或属性的调用都可能导致 NullPointerException:

String isocode = user.getAddress().getCountry().getIsocode().toUpperCase();
复制代码

为了确保不触发异常,需要在访问每一个值之前对其进行明确地检查:

if (user != null) {
    Address address = user.getAddress();
    if (address != null) {
        Country country = address.getCountry();
        if (country != null) {
            String isocode = country.getIsocode();
            if (isocode != null) {
                isocode = isocode.toUpperCase();
            }
        }
    }
}
复制代码

为了简化这个过程,我们使用 Optional 优化这些代码。

基本用法解析

Optional 的对象可能包含值,也可能为空。可以使用同名方法创建一个空的 Optional。

Optional<User> emptyOpt = Optional.empty();
emptyOpt.get();
复制代码

此时访问 emptyOpt 变量的值会导致 NoSuchElementException。

还可以使用 of()ofNullable() 方法创建包含值的 Optioanal 实例,区别在于如果将 null 当作参数传进去 of() 会报空指针异常,所以当对象可能存在或者不存在,应该使用 ofNullable()。

Optional<User> opt = Optional.of(user);
Optional<User> opt = Optional.ofNullable(user);
复制代码

从 Optional 实例中获得实际值对象的方法之一是使用 get() 方法。

String na
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值