zoukankan      html  css  js  c++  java
  • @NotNull, @NotEmpty和@NotBlank之间的区别是什么?

    首先是简要描述:

    [java] view plain copy
    @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:

    定义如下:

    [java] view plain copy
    @Constraint(validatedBy = {NotNullValidator.class}) 
    @Constraint(validatedBy = {NotNullValidator.class})

    这个类中有一个isValid方法是这么定义的:
    [java] view plain copy
    public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) { 
     return object != null;   

    public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {
     return object != null;  
    }
    对象不是null就行,其他的不保证。



    2、@NotEmpty:

    定义如下:

    [java] view plain copy
    @NotNull   
    @Size(min = 1) 
    @NotNull  
    @Size(min = 1)
    也就是说,@NotEmpty除了@NotNull之外还需要保证@Size(min=1),这也是一个注解,这里规定最小长度等于1,也就是类似于集合非空。



    3、@NotBlank:

    [java] view plain copy
    @NotNull   
    @Constraint(validatedBy = {NotBlankValidator.class}) 
    @NotNull  
    @Constraint(validatedBy = {NotBlankValidator.class})
    类似地,除了@NotNull之外,还有一个类的限定,这个类也有isValid方法:

    [java] view plain copy
    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: false

    String name = "";
    @NotNull: true
    @NotEmpty: false
    @NotBlank: false

    String name = " ";
    @NotNull: true
    @NotEmpty: true
    @NotBlank: false

    String name = "Great answer!";
    @NotNull: true
    @NotEmpty: true
    @NotBlank: true
    ---------------------
    作者:elementf
    来源:CSDN
    原文:https://blog.csdn.net/elementf/article/details/72963396
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    使用Fiddler工具在夜神模拟器或手机上抓包
    typedef & #defiine & struct
    int main (int argc, const char * argv[0]) 中参数的含义;指针数组和数组指针
    sql语句查询结果合并union all用法_数据库技巧
    jsp html 实现隐藏输入框,点击可以取消隐藏&&弹出输入框
    php弹出确认框
    mysql 插入string类型变量时候,需要注意的问题,妈的,害我想了好几个小时!!
    PHP页面跳转传值的三种常见方式
    Ubuntu&Mac下使用alias简化日常操作
    php mysql 中文乱码解决,数据库显示正常,php调用不正常
  • 原文地址:https://www.cnblogs.com/xinglongbing521/p/10299414.html
Copyright © 2011-2022 走看看