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

    摘自:https://www.cnblogs.com/Terry-Wu/p/8134732.html


    示例:

    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
    

      


     

    简述三者区别

    @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})
    
    这个类中有一个isValid方法是这么定义的:
    public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {  
     return object != null;    
    } 
    
    对象不是null就行,其他的不保证。

    2、@NotEmpty:

    定义如下:
    @NotNull    
    @Size(min = 1)    

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

      

    3、@NotBlank:

    @NotNull    
    @Constraint(validatedBy = {NotBlankValidator.class})   

    类似地,除了@NotNull之外,还有一个类的限定,这个类也有isValid方法:

    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。
    

      


     

      

  • 相关阅读:
    Li Fei-fei写给她学生的一封信,如何做好研究以及写好PAPER(转载)
    OpenCV学习-——OpenCV永久配置(win7 64位+VS2012+OpenCV 2.4.6)
    Eclipse + Jdk配置Java编程环境
    BeautifulSoup安装与引用
    自动启动服务
    自动行列转置
    java-接口
    java基础-抽象类
    JAVA学习day 05 运算
    JAVA学习day 04 变量
  • 原文地址:https://www.cnblogs.com/xinruyi/p/11257663.html
Copyright © 2011-2022 走看看