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

  • 相关阅读:
    [转]PublishingFeatureHandler(发布功能参数)
    抽象类与接口使用的MSDN建议
    [转]SharePoint内容定制之XSLT高级用法——使用Muenchian方法分组XML数据
    MOSS中的DelegateControl机制
    [转]SharePoint内容定制之XSLT高级用法——带返回值的函数调用
    问题:加了访问权限也无法访问网站。
    [转]Writing Custom Entries to the Audit Log in Windows SharePoint Services 3.0(如何记录自定义审核日志)
    .NET使用C#连接TIBCO的JMS消息服务
    [转]SharePoint 2007 and 2010 Farm ports – configuring firewall(如何配置服务器场中的防火墙)
    [转] SharePoint Features elements, scope and other info
  • 原文地址:https://www.cnblogs.com/xinglongbing521/p/10299414.html
Copyright © 2011-2022 走看看