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

  • 相关阅读:
    Android 显示或隐藏标题栏进度条TitleProgressBar
    Android 利用Sharp样式设置文本框EditText圆角形状
    Android 中带有进度条效果的按钮(Button)
    Android 手势滑动,多点触摸放大缩小图片
    Android (Notification)消息推送机制
    Android AutoCompleteTextView控件实现类似百度搜索提示,限制输入数字长度
    Android 横向列表GridView 实现横向滚动
    Android 利用 AsyncTask 异步读取网络图片
    Android 各种功能代码收集
    Android 之 AlarmManager(定时器) 的介绍和使用
  • 原文地址:https://www.cnblogs.com/xinglongbing521/p/10299414.html
Copyright © 2020-2023  润新知