@NotNull, @NotEmpty和@NotBlank之间的区别是什么?
首先是简要描述:
- @NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0)。
- @NotEmpty://CharSequence, Collection, Map 和 Array 对象不能是 null 并且相关对象的 size 大于 0。
- @NotBlank://String 不是 null 且去除两端空白字符后的长度(trimmed length)大于 0。
@NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0)。
@NotEmpty://CharSequence, Collection, Map 和 Array 对象不能是 null 并且相关对象的 size 大于 0。
@NotBlank://String 不是 null 且去除两端空白字符后的长度(trimmed length)大于 0。
为了大家更好地理解,下面让我们看下这些注解都是怎么定义的(在version 4.1中):
1、@NotNull:
定义如下:
- @Constraint(validatedBy = {NotNullValidator.class})
@Constraint(validatedBy = {NotNullValidator.class})
这个类中有一个isValid方法是这么定义的:
- public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {
- return object != null;
- }
public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {return object != null;
}
对象不是null就行,其他的不保证。
2、@NotEmpty:
定义如下:
- @NotNull
- @Size(min = 1)
@NotNull
@Size(min = 1)
也就是说,@NotEmpty除了@NotNull
之外还需要保证@Size(min=1),这也是一个注解,这里规定最小长度等于1,也就是类似于集合非空。
3、@NotBlank:
- @NotNull
- @Constraint(validatedBy = {NotBlankValidator.class})
@NotNull
@Constraint(validatedBy = {NotBlankValidator.class})
类似地,除了@NotNull之外,还有一个类的限定,这个类也有isValid方法:
- if ( charSequence == null ) { //curious
- return true;
- }
- return charSequence.toString().trim().length() > 0;
if ( charSequence == null ) { //curious return true;
}
return charSequence.toString().trim().length() > 0;
有意思的是,当一个string对象是null时方法返回true,但是当且仅当它的trimmed length等于零时返回false。即使当string是null时该方法返回true,但是由于@NotBlank还包含了@NotNull,所以@NotBlank要求string不为null。
给大家一些栗子帮助理解记忆:
String name = null;
@NotNull
: false
@NotEmpty
: false
@NotBlank
: falseString name = "";
@NotNull
: true
@NotEmpty
: false
@NotBlank
: falseString name = " ";
@NotNull
: true
@NotEmpty
: true
@NotBlank
: falseString name = "Great answer!";
@NotNull
: true
@NotEmpty
: true
@NotBlank
: true
@NotNull, @NotEmpty和@NotBlank之间的区别是什么?相关推荐
- Spring Boot req中@NotNull, @NotEmpty和@NotBlank之间的区别是什么?
简述三者区别 @NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0). @NotEmpty://Ch ...
- @NotNull, @NotEmpty和@NotBlank之间的区别及示例
三者之间的区别 `@NotNull:` CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0). `@NotEmpty:` ...
- notempty注解属于哪个依赖_Spring注解 @NotBlank,@NotNull,@NotEmpty三者之间的区别
简述三者区别 @NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0). @NotEmpty://Ch ...
- 常用校验注解@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated用法区别,以及搭配 BindingResult使用,嵌套验证等《使用|CSDN创作打卡》
文章目录 一.常用注解@NotEmpty,@NotBlank,@NotNull介绍 二.@Valid与@Validated的使用与区别 2.1@Valid与@Validated区别: 2.2嵌套验证 ...
- @NotNull,@NotEmpty和@NotBlank使用和区别
实际上关于参数校验我们经常会遇到@NotNull,@NotEmpty和@NotBlank,几乎涉及到校验的工具包都会有它们的身影不管是Hibernate工具包还是Apache的校验工具包或者其他常用的 ...
- Spring中@NotEmpty、@NotBlank、@NotNull 区别和使用
1:引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>sp ...
- Spring中@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated注解简介及简单使用
前言 在开发中,为了代码的稳定性不报空指针异常,经常需要判断前端传过来的值是否为空,为空的话就返回前端值为空的提示,才能进行下一步的操作 Maven依赖的引入: springboot 2.3.0 以后 ...
- 校验注解-- @NotNull、@NotEmpty、@NotBlank
实体字段校验 @NotNull.@NotEmpty.@NotBlank 1.@NotNull:不能为 null,但可以为 empty,一般用在 Integer 类型的基本数据类型的非空校验上,而且被其 ...
- 【Java用法】@NotEmpty、@NotBlank、@NotNull注解的使用方法与区别
以下三个注解均是 javax.validation.constraints 包下的,用于属性上的: @NotEmpty.@NotBlank.@NotNull三种注解的区别 @NotEmpty:用在集合 ...
最新文章
- linux yum错误 14: PYCURL ERROR 6 - Couldn't resolve host 'mirrorlist.centos.org'
- 2020(广东)功能性农业大健康大会中国农民丰收节交易会
- 算法复杂度为O(N) 的排序算法
- 状态压缩:枚举子集(最优组队)(ybtoj)(动态规划)
- swoole 热重启
- AIDL实现不同应用间的通信
- assemblyinstaller 无法启动计算机.上的服务,本地计算机上的Windows Search服务启动然后停止 | MOS86...
- matlab泰勒 习题,泰勒公式及其应用典型例题
- Word2019 插入脚注问题
- php怎么求最小公倍数,最小公倍数算法
- 「AI产品」产品小姐姐分析抖音背后的计算机视觉技术
- 电信获取光猫超级密码
- mocc javascript
- 桃花院长:怎么找对象?相亲过来人告诉你...
- 除法器的实现(恢复余数、不恢复余数、级数展开、Newton-Raphson)
- Win7及以上系统自带Windows 光盘映像刻录机
- Bert Ertman专访:将Spring及遗留应用迁移到Java EE 6平台
- mysql 中文名称排序,mysql 依照中文名称排序
- tomcat默认编码问题
- 2019年支付寒冬将至,我们如何应对?
热门文章
- 《未来网络白皮书——智能互联网白皮书》发布!
- 【哪些工作会被ChatGPT取代?】我用ChatGPT全自动化生成代码进行了深度分析
- 海鲅S1小白装黑果心得体会
- Ubuntu使用教程基础
- matlab 流固耦合,一种基于MATLAB-ANSYS软件的静压溜板流固耦合工作性能的计算方法与流程...
- MongoDB安装Mac M1
- 【Matlab语音识别】电话按键语音识别(含按键录音)【含源码 1752期】
- springcloud微服务整合/集成swagger(knife4j-小刀)实现在线文档调试和查看功能
- 宝元系统u盘使用说明_宝元系统简易操作指南
- LSF_管理软件许可证和其他共享资源