首页 > 其他分享 >@NonNull 注解小记——非空判断的触发时机区别

@NonNull 注解小记——非空判断的触发时机区别

时间:2023-01-04 18:45:57浏览次数:38  
标签:非空 NonNull System param 参数 println out 小记

背景

@NonNull: 关于这个注解,lombok 的一个注解,可以加在方法-入参,或构造函数上。

本以为加了这个参数,会自动判断(编译阶段)会判断,但发现并不是这个意思。因为在编译的时候,传个空的参数过来,它是不会有任何的报错提示的。

那这个东西有什么用呢?一度产生了怀疑。


直至,后来才突然醒觉,其实,这个注解,其实是用于调用时候,进行一种 对参数非空的“预判断”,如果参数空的,就马上把空指针抛出来,而不是等到执行方法的时候,再来报空指针错误。


上代码看看

import lombok.NonNull;

public class NotNullDemo {
    public static void main(String[] args) {
        checkNull(null);
    }
    public static Integer checkNull(@NonNull String param) {
        System.out.println(param);
        System.out.println(param);
        System.out.println(param);
        System.out.println(param);
        System.out.println("参数长度是:" + param.length());
        return param.length();
    }
}

执行结果分析

  • 如果在方法参数处加了 @NonNull,方法被调用的时候,会在方法入口处就报错,抛出空指针。这个时候并不会进入方法体里面。
  • 如果在方法参数处没有加 @NonNull, 方法被调用的时候,方法体会执行,执行过程中,哪里报错就在哪里抛异常。
    这样可能就会执行一些不必要的操作

嗯,这个就是 @NonNull 的用法了。它并不能防止或避免空指针,但可以更早地进行判断,一个空指针的触发机制(时间)问题


image

image

标签:非空,NonNull,System,param,参数,println,out,小记
From: https://www.cnblogs.com/aaacarrot/p/17025725.html

相关文章

  • 如何用弹出对话框实现登录页非空提示?
    使用触发器中的弹出对话框通过创建多个触发器,实现多个输入框的不同值的非空提示。效果展示具体步骤1.制作一个标题2.制作输入框3.制作“获取验证码”按钮4.制作“登陆”......
  • 耳分解小记
    在有向(强)连通图中,定义“耳”为一条简单路径/一个简单环\(a_1\toa_2\to\cdots\toa_k\),使得删去所有这些边之后不影响除了\(a_2,a_3,\dots,a_{k-1}\)的点的(强)连通性。......
  • Webpack3.x升级至 4.x 小记
    Webpack3.x升级至4.x小记 近期项目部署遇到点问题,需要升级webpack版本,特此整理一小记,记录升级过程中的依赖包及报错处理。本次升级的依赖包及对应版本对照表:np......
  • nginx使用小记
    中文wiki社区:http://wiki.codemongers.com/NginxChs一.nginx安装1.下载nginx:http://sysoev.ru/nginx/download.html(官方下载页面)wgethttp://sysoev.ru/nginx/nginx......
  • Mysql常见注意事项小记
    Mysql常见注意事项小记1.排序问题正常如果按照某字段升序排列,空值会排到有值的前面;如果逆序排序空值排在最后。有时候我们需要该字段为空的行数据要排到最......
  • 【学习小记】狄利克雷卷积+杜教筛
    Preface这东西分明就是玄学暴力用来求简单的数论函数的前缀和,像φ,μ这类的东西当然,约数和,约数个数之类的也是可以的Text数论函数是指定义域是整数,陪域是复数的函数Dirich......
  • 【学习小记】狄利克雷卷积+杜教筛
    Preface这东西分明就是玄学暴力用来求简单的数论函数的前缀和,像φ,μ这类的东西当然,约数和,约数个数之类的也是可以的Text数论函数是指定义域是整数,陪域是复数的函数Dirich......
  • Java8中Optional类入门-替代null避免冗杂的非空校验
    场景Java核心工具库Guava介绍以及Optional和Preconditions使用进行非空和数据校验:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/127683387上面在讲Guava......
  • 供应链管理小记
    背景  奥巴马政府在2012年1月23日,发布了著名的《全球供应链国家安全战略》,指出:国际贸易一直并将是美国和全球经济增长的强大引擎。近年来,通信技术的进步以及贸......
  • 支持向量机(SVM)学习小记
    支持向量机(SVM)简介是一种二分类模型,基本模型的定义是在特征空间上的间隔最大的线性分类器间隔最大有利于感知学习策略:间隔最大化,可以形式化为一个求解凸二次规划问题,也等......