关于@NotNull 和 @Nullable
阅读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相关推荐
- android nullable jar,java – 导入NotNull或Nullable,Android Studio将无法编译
当我为参数添加@NotNull或@Nullable注释Android Studio自动帮助我添加/lib/annotations.jar和导入 import org.jetbrains.annotat ...
- Java自定义Exception
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- 关于Java空指针的控制(转)
1)在已经的String(字符串)调用 equal()和 equalsingnoreCase()而不是未知的对象 通常在已经的非空字符串在调用equals().因为equal()方法是对称的,调用a. ...
- spring elasticsearch 按条件删除_实战:项目数据源转为Elasticsearch
原本项目是基于MYSQL的,现因需求将其转换为MYSQL+Elasticsearch,MYSQL的ORM使用的是Spring Data Jpa,Mybatis的转换与其类似,有人看再更 先看原项目 原 ...
- DevOps on DevCloud|代码检查服务如何降低“Billion Dollar Mistake” NPE风险
作者:伦语春秋 敏而至善 引言:在"DevOps能力之屋(Capabilities House of DevOps)"中,华为云DevCloud提出(工程方法+最佳实践+生态) ...
- 编程的智慧 强烈推荐
编程的智慧 编程是创造性的工作,是一门艺术.精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的"智慧",并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋.然而我希望它能 ...
- Java中的空指针异常
Java中的空指针异常 一.什么是空指针异常? 1.1 异常的分类 NullPointerException是RuntimeException的一个子类,这是运行时异常,在编译时期不会触发. 1.2 ...
- java中如何避免空指针异常
Java应用中抛出的空指针异常是解决空指针的最好方式,也是写出能顺利工作的健壮程序的关键.熟话说"预防胜于治疗",对于这么令人讨厌的空指针异常,这句话也是成立的.值得庆幸的是运用一 ...
- 教你如何完全解析Kotlin中的类型系统
简述: 已经很久没有更新文章,这大概是2019年第二篇文章了,有很多小伙伴们都在公众号留言说是不是断更了.是不是跑路了.在这里统一回复下我还好,并没有跑路哈,只是在思考接下来文章主要方向在哪? 如何在 ...
- 程序的魅力与智慧结晶!!!
编程的智慧 编程是一种创造性的工作,是一门艺术.精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的"智慧",并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋.然而由于软 ...
最新文章
- C#系列之聊聊.Net Core的InMemoryCache
- rocketmq批量消费
- pytorch分布式训练(二):torch.nn.parallel.DistributedDataParallel
- javascript实现图片放大镜效果
- git/SmartGit切换用户
- 管理感悟:正确认识自己的工作
- Java权限管理系统
- 实验10. Hadoop环境搭建
- beyong compare激活
- mysql column specified twice_Mysql抛出Column 'descriptions' specified twice异常解决方法
- 【最后有彩蛋】Pyhton接口测试手册
- 递归实现树状分级部门树《部门单表》
- android appwidget 空间动画,Android学习之AppWidget笔记分享
- 平行因子-三维荧光-PARAFAC数据前处理
- Unity VR(PicoVR)
- 有哪些经典的企业管理书籍值得推荐?
- 数据分析调研报告_CodingPark编程公园
- 硬件定义软件?还是,软件定义硬件?
- 如何在Word文档中同时为中文和西文分别设置不同字体
- 电脑在使用时突然黑屏的解决方法