关于@NotNull 和 @Nullable

关于@NotNull 和 @Nullable阅读spring源码发现里面用到两个注解@NotNull和@Nullable,现在做一个简单的分析参考文档:避免Java应用中NullPointerException的技巧和最佳实践安卓中的@Nullable和NotNull注释在写程序的时候你可以定义是否可为空指针。通过使用像@NotNull和@Nullable之类的annotation来声明一个方法是否是空指针安全的。…

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

阅读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);
}

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • iOS 判断字符串中含有某个字符串 rangeOfString

    iOS 判断字符串中含有某个字符串 rangeOfString在iOS8以后,还可以用下面的方法来判断是否包含某字符串:NSString*women=@"Heyyouarebitch?";if([womencontain

    2022年7月1日
    22
  • LOADRUNNER8.1卸载

    LOADRUNNER8.1卸载

    2021年12月1日
    42
  • JAVA中Object转String

    JAVA中Object转String1.object.toString()方法这种方法要注意的是object不能为null,否则会报NullPointException,一般别用这种方法。2.String.valueOf(object)方法这种方法不必担心object为null的问题,若为null,会将其转换为”null”字符串,而不是null。这一点要特别注意。”null”和null不是一个概念。3….

    2022年6月12日
    34
  • Angular面试题_angular面试

    Angular面试题_angular面试1.angular的数据绑定采用什么机制?详述原理答案:脏检查机制。解析:双向数据绑定是AngularJS的核心机制之一。当view中有任何数据变化时,会更新到model,当model中数据有变化时,view也会同步更新,显然,这需要一个监控。原理就是,Angular在scope模型上设置了一个监听队列,用来监听数据变化并更新view。每次绑定一个东西到view上时AngularJS就会往$watch队列里插入一条$watch,用来检测它监视的mode

    2022年10月18日
    3
  • 关于charles抓包https乱码的设置[通俗易懂]

    关于charles抓包https乱码的设置[通俗易懂]关于charles抓包https乱码的设置charles安装本地证书首先我们点击help->SSLProxying->InstallCharlesRootCertificate安装证书。默认安装证书是不受信任的,双击打开证书,打开信任选择项,将使用此证书时这是为始终信任。安装手机证书点击help->SSLProxying->Inst…

    2022年6月4日
    98
  • L1-046 整除(模拟除法)

    L1-046 整除(模拟除法)原题链接这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,s可能是个非常大的数 ——

    2022年8月9日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号