如何优雅的解决空指针问题

空指针异常 (NullPointerException)(NPE) 是开发过程中最常见的问题之一
前人已经总结了很多避免空指针问题的方法。包括:

  1. 对于非空的对象,使用 Objects.requireNonNull (target) 判空
  2. 对于数组对象,返回空数组而非 null
  3. 对于非数组对象,使用 Null Object pattern

等等

但上面的方法都需要我们在编写代码是随时保持对空指针的警惕性,而众所周知,这样是反人性的😆,非常 no 优雅,那么有没有方式可以避免这种情况❓

下面有请我为大家隆重介绍,空指针的破壁人,提高效率的黑暗圣经 (bushi),深藏功与名的 Bug 毁灭者:

org.jetbrains.annotations

org.jetbrains.annotations 库中的 @NotNull@Nullable 注解用于表明目标是否可能为空。可以用在:成员变量 / 入参 / 方法体 上

合理使用这些注解后,我们可以实现以下目标:

  1. 对于不可能为空的变量,无需做任何判断
  2. 对于可能为空的变量,不必随时保持警惕,IDEA 会自动提示,我们只需按提示对代码进行处理即可

@NotNull 注解

  1. 对于 方法入参, @NotNull 表明该入参不可能为空,并且 IDEA 会对传入的可能为空的对象进行提示:
    img
  2. 对于 成员变量, @NotNull 表明该成员变量不可能为空,并且 IDEA 会要求构造器中必须传入该成员变量:
    img
  3. 对于 方法, @NotNull 表明该方法的出参不可能为空

@Nullable注解

使用位置与@NotNull相同, 含义相反.

对于每个使用@Nullable注解的变量, 都会提示判空:
img

IDEA 针对这些注解的配置

默认情况下, IDEA 会对所有使用了@NotNull的变量在编译的代码中增加非空判断, 目的是提前识别空指针问题
img
如果我们不需要这个操作, 可以在设置中关闭它:

  • 进入File | Settings | Build, Execution, Deployment | Compiler
  • 关闭 Add runtime assertions for notnull-annotated methods and parameters 选项
    img
posted @   1nfinity  阅读(229)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示