• @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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    leetcode练习:26. Remove Duplicates from Sorted Array
    leetcode练习:11. Container With Most Water
    leetcode练习:5. Longest Palindromic Substring
    leetcode练习:2.Add Two Numbers
    算法笔记:分治
    (排序回顾)快速排序
    (排序回顾)归并排序
    leetcode练习:2017/09/21~09/22
    算法笔记:递归&迭代
    在Treeview中节点的data属性中保存记录类型及其消除的办法
  • 原文地址:https://www.cnblogs.com/xinglongbing521/p/10299414.html
Copyright © 2020-2023  润新知