首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >关于@NotNull 和 @Nullable

关于@NotNull 和 @Nullable

作者头像
全栈程序员站长
发布2022-07-01 14:44:19
发布2022-07-01 14:44:19
1K0
举报

大家好,又见面了,我是你们的朋友全栈君。

阅读spring源码发现里面用到两个注解@NotNull 和 @Nullable,现在做一个简单的分析 参考文档: 避免Java应用中NullPointerException的技巧和最佳实践 安卓中的@Nullable和NotNull 注释

在写程序的时候你可以定义是否可为空指针。通过使用像@NotNull和@Nullable之类的annotation来声明一个方法是否是空指针安全的。现代的编译器、IDE或者工具可以读此annotation并帮你添加忘记的空指针检查,或者向你提示出不必要的乱七八糟的空指针检查。IntelliJ和findbugs已经支持了这些annotation。这些annotation同样是JSR 305的一部分,但即便IDE或工具中没有,这个annotation本身可以作为文档。看到@NotNull和@Nullable,程序员自己可以决定是否做空指针检查。顺便说一句,这个技巧对Java程序员来说相对比较新,要采用需要一段时间。

用法

如果可以传入NULL值,则标记为@Nullable,如果不可以,则标注为@Nonnull。那么在我们做一些不安全严谨操作的编码操作时,这些注释会给我们一些警告。如下是我看spring源码时,发现用到@Nullable,借此源码做个测试:

代码语言:javascript
复制
public FileSystemXmlApplicationContext(String[] configLocations, boolean refresh, @Nullable ApplicationContext parent) throws BeansException {
    super(parent);
    this.setConfigLocations(configLocations);
    if (refresh) {
        this.refresh();
    }

}

我们把@Nullable改成@Nonnull,然后发现调用该方法的地方出现告警:

代码语言:javascript
复制
public FileSystemXmlApplicationContext(String... configLocations) throws BeansException {
     // here warning   
     this(configLocations, true, (ApplicationContext)null);
}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/131156.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档