小言_互联网的博客

Spring注解@NonNull作用 Spring注解@Nullable作用 Spring NonNull 注解作用 Spring Nullable注解作用

314人阅读  评论(0)

Spring注解@NonNull作用 Spring注解@Nullable作用 Spring NonNull 注解作用 Spring Nullable注解作用

一、概述

        在看Spring源码的时候,经常会发现有 @NonNull 或 @Nullable 注解的标记,一般是在方法上,或在 参数中,本着好奇的心里,研究下这2个注解的作用是什么呢?

 

二、代码理解

        1、@NonNull: org.springframework.lang.NonNull

        2、@Nullable: org.springframework.lang.Nullable

        3、写一段代码测试,验证 NonNull 和 Nullable 注解是否有参数验证功能


  
  1. @RunWith(SpringRunner.class)
  2. @SpringBootTest
  3. public class NullableSpringTest {
  4. @Test
  5. public void test () throws Exception{
  6. say( "小明", "北京市");
  7. say( null, null);
  8. }
  9. public void say (@NonNull String name , @Nullable String addr){
  10. System.out.println( "@NonNull name ="+ name+ " ; @Nullable addr = " + addr);
  11. }
  12. }

        4、执行完毕后,输出结果如下:


  
  1. @NonNull name =小明 ; @Nullable addr = 北京市
  2. @NonNull name = null ; @Nullable addr = null

三、总结

        1、根据【二-4】中测试输出的结果可知: @NonNull 或 @Nullable , 没有参数验证功能,只是一个标记注解,告知调用方:是否允许为null的情况。

  • @NonNull : 表示不能为null
  • @Nullable : 表示允许为null

        2、作用范围是: 方法上、参数、字段(类属性上)


  
  1. @Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD})
  2. @Retention(RetentionPolicy.RUNTIME)
  3. @Documented
  4. @Nonnull(when = When.MAYBE)
  5. @TypeQualifierNickname
  6. public @interface Nullable {
  7. }

        3、在阿里技术出品《Java工程师必读手册》 , 也提到过 @NonNull 和@Nullable 标注参数。

 


转载:https://blog.csdn.net/HaHa_Sir/article/details/127678161
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场