阅读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,借此源码做个测试:

public FileSystemXmlApplicationContext(String[] configLocations, boolean refresh, @Nullable ApplicationContext parent) throws BeansException {super(parent);this.setConfigLocations(configLocations);if (refresh) {this.refresh();}}

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

public FileSystemXmlApplicationContext(String... configLocations) throws BeansException {// here warning   this(configLocations, true, (ApplicationContext)null);
}

关于@NotNull 和 @Nullable相关推荐

  1. android nullable jar,java – 导入NotNull或Nullable,Android Studio将无法编译

    当我为参数添加@NotNull或@Nullable注释Android Studio自动帮助我添加/lib/annotations.jar和导入 import org.jetbrains.annotat ...

  2. Java自定义Exception

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  3. 关于Java空指针的控制(转)

    1)在已经的String(字符串)调用 equal()和 equalsingnoreCase()而不是未知的对象 通常在已经的非空字符串在调用equals().因为equal()方法是对称的,调用a. ...

  4. spring elasticsearch 按条件删除_实战:项目数据源转为Elasticsearch

    原本项目是基于MYSQL的,现因需求将其转换为MYSQL+Elasticsearch,MYSQL的ORM使用的是Spring Data Jpa,Mybatis的转换与其类似,有人看再更 先看原项目 原 ...

  5. DevOps on DevCloud|代码检查服务如何降低“Billion Dollar Mistake” NPE风险

    作者:伦语春秋   敏而至善 引言:在"DevOps能力之屋(Capabilities House of DevOps)"中,华为云DevCloud提出(工程方法+最佳实践+生态) ...

  6. 编程的智慧 强烈推荐

    编程的智慧 编程是创造性的工作,是一门艺术.精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的"智慧",并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋.然而我希望它能 ...

  7. Java中的空指针异常

    Java中的空指针异常 一.什么是空指针异常? 1.1 异常的分类 NullPointerException是RuntimeException的一个子类,这是运行时异常,在编译时期不会触发. 1.2 ...

  8. java中如何避免空指针异常

    Java应用中抛出的空指针异常是解决空指针的最好方式,也是写出能顺利工作的健壮程序的关键.熟话说"预防胜于治疗",对于这么令人讨厌的空指针异常,这句话也是成立的.值得庆幸的是运用一 ...

  9. 教你如何完全解析Kotlin中的类型系统

    简述: 已经很久没有更新文章,这大概是2019年第二篇文章了,有很多小伙伴们都在公众号留言说是不是断更了.是不是跑路了.在这里统一回复下我还好,并没有跑路哈,只是在思考接下来文章主要方向在哪? 如何在 ...

  10. 程序的魅力与智慧结晶!!!

    编程的智慧 编程是一种创造性的工作,是一门艺术.精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的"智慧",并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋.然而由于软 ...

最新文章

  1. C#系列之聊聊.Net Core的InMemoryCache
  2. rocketmq批量消费
  3. pytorch分布式训练(二):torch.nn.parallel.DistributedDataParallel
  4. javascript实现图片放大镜效果
  5. git/SmartGit切换用户
  6. 管理感悟:正确认识自己的工作
  7. Java权限管理系统
  8. 实验10.  Hadoop环境搭建
  9. beyong compare激活
  10. mysql column specified twice_Mysql抛出Column 'descriptions' specified twice异常解决方法
  11. 【最后有彩蛋】Pyhton接口测试手册
  12. 递归实现树状分级部门树《部门单表》
  13. android appwidget 空间动画,Android学习之AppWidget笔记分享
  14. 平行因子-三维荧光-PARAFAC数据前处理
  15. Unity VR(PicoVR)
  16. 有哪些经典的企业管理书籍值得推荐?
  17. 数据分析调研报告_CodingPark编程公园
  18. 硬件定义软件?还是,软件定义硬件?
  19. 如何在Word文档中同时为中文和西文分别设置不同字体
  20. 电脑在使用时突然黑屏的解决方法

热门文章

  1. 虚拟机管理程序、虚拟化和云: 深入剖析 PowerVM 虚拟机管理程序
  2. MSSQL 2000更改表和存储过程的所有者
  3. 考研英语作文:环保呼吁信
  4. 图片压缩兼修改md5
  5. 破译密码、设计飞机和建设团队:Randy Shoup谈高绩效团队
  6. 模拟个密保卡的效果,没用JS框架
  7. 1.Jenkins 权威指南 --- 在Jenkins 中构建第一个项目
  8. 44. 将样式表放在顶部(5)
  9. 3.5 Zend_Db_Table_Rowset
  10. Extjs MVC讲解