Java 实战:优雅处理空值的几种方法

一、为什么要关注“空值”问题?

在 Java 开发中,**NullPointerException(空指针异常)** 是最常见也最头疼的异常之一。
很多时候,我们写的逻辑本身没问题,但因为某个变量意外为 null,就让整个程序崩溃。

正所谓:“空指针一时爽,调试火葬场。”

因此,如何“优雅地处理空值”,不仅是写出健壮代码的关键,也体现了开发者的编程素养。


二、传统做法:繁琐的空值判断

最常见的写法大概是这样👇

if (user != null) {
    if (user.getAddress() != null) {
        String city = user.getAddress().getCity();
        System.out.println(city);
    }
}

虽然能避免空指针,但一层层嵌套不仅 冗长难读,也容易遗漏某个判断。
尤其在业务代码复杂时,写满 if (xxx != null) 的代码让人抓狂。


三、改进方式一:使用 Objects 工具类

从 Java 7 开始,java.util.Objects 提供了一系列安全方法:

String name = Objects.toString(user.getName(), "未知用户");

user.getName()null 时,会自动返回默认值 "未知用户"

还可以搭配空值判断:

if (Objects.nonNull(user)) {
    // do something
}

简洁清晰,比 user != null 更语义化。


四、改进方式二:善用 Optional(Java 8+)

Optional 是处理空值的“官方优雅方案”,本质是一个容器对象,它可以装一个非空值,也可以是空。

✅ 1. 创建 Optional

Optional<User> optionalUser = Optional.ofNullable(user);

✅ 2. 获取值时提供默认值

String name = optionalUser
        .map(User::getName)
        .orElse("匿名用户");

map() 会在值存在时执行,orElse() 则在值为空时返回默认值。
整个链式调用自然流畅,完全避免了 null 判断。







次阅读

扫描下方二维码,关注公众号:程序进阶之路,实时获取更多优质文章推送。


扫码关注

评论