后端——框架——容器框架——spring_core——《官网》阅读笔记——第七章节(NULL-safety)

第七章节介绍Null-safety,作用是在开发阶段添加是否可以为NULL的约束条件,在运行阶段避免抛出空指针异常。

1、注解

  原著中介绍了4个注解。

  1. @NonNull:用于添加对象属性,方法参数,方法返回值不为NULL的约束条件。
// 对象属性上
@NonNull
private String userName;
// 方法参数上
public static void testLiteralExp(@NonNull String str) {}
// 方法返回值上
public @NonNull String test(){}

  2.@Nullable:与@NonNull作用刚好相反,属性,方法参数,返回值可以为NULL

  3.@NonNullApi:当前包下面的所有方法参数和返回值都不可以为NULL,可以被@Nullable覆盖。

@org.springframework.lang.NonNullApi
package learn.test;

  4.@NonNullField:当前包下面的对象的所有字段都不可以为NULL,可以被@Nullable覆盖。

2、IDE

  当字段,方法参数,方法返回值添加上这些注解时,IDE会有相应的提示。本文以Eclipse为例演示具体的步骤

  1. 第一步:打开Window---->preferences----->Java------>Complier---->Error/Warnings

  找到Null analysis,展开,点击enable annotation-based null analysis。

  

  2.在下面的use default annotation for null specifications把对勾去掉,点击configure,配置如下图,

  

  3.点击Apply,重新编译即可看到效果。

  

3、JSR305

  JSR305中也有相同功能的注解,而且还有很多其他的注解,使用这些注解首先必须引入jsr305的jar包

<!-- https://mvnrepository.com/artifact/com.google.code.findbugs/jsr305 -->
<dependency>
    <groupId>com.google.code.findbugs</groupId>
    <artifactId>jsr305</artifactId>
    <version>3.0.2</version>
</dependency>

  编写代码时,再次使用NonNull注解时,会发现有javax.annotation.NonNull。

import javax.annotation.Nonnull;

  要使编译器提示,需要重新配置第二步,将注解修改为javax.annotation.NonNull等注解

原文地址:https://www.cnblogs.com/rain144576/p/12272405.html