前言

写代码判空经常让人头疼,通常能写到手疼,代码中经常充斥着各种判空,影响代码美观。因此java 提出了 jsr-305 提供了前面问题的解决方案。业界有很多实现。下面介绍两个经常用到的实现及其示例。

Spring core

位于org.springframework.lang 包下,SpingBoot 项目中可直接使用。

  • @NonNull 指示目标对象不能为 null,用于注解方法,参数以及变量;
  • @NonNullApi 指定参数和方法返回值默认不能为 null,用于包(Package)级别注解;
  • @NonNullFields 指示变量不能为 null,用于包(Package)级别注解;
  • @Nullable 指定目标对象可以为 null,可用于注解方法,参数以及变量 。若是与 @NonNullApi@NonNullFields 共用,会被覆盖;

Lombok

Lombok 的实现与 Spring core 异曲同工,此处不再详细介绍,常用的是 @NonNull ,详情参考其官网 @NonNull

  • Lombok特性

@NonNull系列注解,优雅解决令人发指的判空相关推荐

  1. 注解 @RequiredArgsConstructor与@NonNull系列注解的用法:

    一.@RequiredArgsConstructor使用解释: 导入lombok包:<dependency><groupId>org.projectlombok</gro ...

  2. 在 Java 中如何优雅地判空

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 李良逸 来源 | blog.imuxuan.c ...

  3. 如何判断map为空_Java到底如何更优雅地判空

    Java面试笔试面经.Java技术每天学习一点 Java面试 关注不迷路 作者:李良逸 来源:http://blog.imuxuan.com/ 判空灾难 作为搬砖党的一族们,我们对判空一定再熟悉不过了 ...

  4. 【Java 8系列】Java开发者的判空利器 -- Optional

    热门系列: [Java 8系列]收集器Collector与工具类Collectors [Java 8系列]Stream详解,看这一篇就够啦 [Java 8系列]Lambda 表达式,一看就废 [Jav ...

  5. Java 优雅判空的方法

    为了避免 NullPointerException 出现,我们经常会进行如下操作. if (object != null) {object.do(); } 那么每次使用一个不确定的对象,都需要进行一次 ...

  6. 如何判断map为空_在Java中如何优雅地判空

    来自:李良逸 链接:http://blog.imuxuan.com/archives/86 判空灾难 作为搬砖党的一族们,我们对判空一定再熟悉不过了,不要跟我说你很少进行判空,除非你喜欢 NullPo ...

  7. 详解Spring Boot框架中的@Conditional系列注解

    目录 1. @Conditional 注解 2. Spring boot 扩展 1) @ConditionalOnClass和@ConditionalOnMissingClass注解 2) @Cond ...

  8. SpringMVC注解@initbinder解决类型转换问题

    SpringMVC注解@initbinder解决类型转换问题 参考文章: (1)SpringMVC注解@initbinder解决类型转换问题 (2)https://www.cnblogs.com/an ...

  9. 注解@Async解决异步调用问题

    注解@Async解决异步调用问题 参考文章: (1)注解@Async解决异步调用问题 (2)https://www.cnblogs.com/mmzs/p/11557583.html 备忘一下.

最新文章

  1. 报名 | Sven Travis教授设计与人工智能思享会
  2. 学习python需要什么基础-学习Python需要哪些基础知识?
  3. 设计模式:控制反转(Inversion Of Control)
  4. 这个图形的体积有限,但表面积却是无穷大
  5. Fedora 与 Ubuntu 深度比较
  6. java客户端连接请求发不出去_java – Spring:客户端发送的请求在语法上不正确()...
  7. 【SpringCloud】Spring cloud Alibaba Sentinel 规则持久化
  8. 小米6android版本更新,小米6正式迎来了安卓9.0稳定版升级,一代神机继续创造辉煌...
  9. Java中String的用法
  10. [Flutter] 一些面试可能会问基础知识
  11. 传智播客 机器学习和深度学习之 Scikit-learn与特征工程 学习笔记
  12. shl归纳推理测试题库_笔经总结含征服shl功略
  13. 软件测试分为哪几个阶段?
  14. JDk1.8(Win 10版 64位)安装、环境变量配置及第一个Java程序
  15. 工具 | 超实用工具listary和snipaste
  16. 工程师思维 vs 销售思维
  17. 肠道-甲状腺轴如何影响健康
  18. opencv学习-011-图像像素归一化(normalize)
  19. H5打造属于自己的视频播放器(JS篇1)
  20. csv文件导入后台乱码_Excel打开csv文件出现乱码的解决方法

热门文章

  1. OSG for Android新手教程系列(四)——JNI与NDK的使用
  2. Golang 生成压缩包
  3. 北汽新能源eu5/ex3/ex5系列免登录
  4. vue cli 版本更改
  5. 深入理解NLP Subword算法:BPE、WordPiece、ULM
  6. OpenCv图像处理实战——文档扫描
  7. 插画|曼奇立德《商业运营插画》学员“安利25周年”实战作品
  8. Springboot整合Quartz任务框架
  9. 6月22服务器维护吃鸡,绝地求生6月22日更新了什么 绝地求生6.22吃鸡更新内容汇总...
  10. vue table v-for v-for其他用法