@NotNull 봄, @NotEmpty 및 @NotBlank 그 차이점은 무엇입니까?

발췌 : HTTPS : //www.cnblogs.com/Terry-Wu/p/8134732.html


 

예 :

문자열 이름 = NULL; 
@NotNull : 거짓 
@NotEmpty : 거짓 
@NotBlank : 잘못된 

문자열 이름 = ""; 
@NotNull : 사실 
@NotEmpty : 거짓 
@NotBlank : 잘못된 

문자열 이름 = ""; 
@NotNull : 사실 
@NotEmpty : 사실 
@NotBlank : 거짓 

문자열 이름 =; "위대한 대답!" 
@NotNull : 사실 
@NotEmpty : 사실 
@NotBlank : 사실

  


 

세 가지 차이점에 대한 설명

@NotNull : //의 CharSequence, 컬렉션,지도 Array 객체와 null 일 수 없습니다 만, 빈 세트 (크기 = 0) 일 수도있다.  
@NotEmpty : //의 CharSequence, 컬렉션,지도 및 배열 객체는 null 일 수 없습니다 및 0보다 크기 관련 개체가 더.  
@NotBlank : // 문자열은 null가 아니고, 공백 문자의 두 종료 후 (손질 길이) 제거 길이는 0보다 크다.

  


(에서 버전 4.1) 정의 주석 :

1, NOTNULL @

다음과 같이 정의된다 :
@Constraint (validatedBy NotNullValidator.class = {})
이 클래스는 isValid 이렇게 정의 된 방법이 있습니다 :
공공 부울 isValid (Object 객체, ConstraintValidatorContext constraintValidatorContext) {   
 반환 객체 = NULL!    
}
객체는 다른이 보장되지, 줄에 널 (null)이 아닙니다.

 

2는 NotEmpty @

다음과 같이 정의된다 :
@NotNull     
@Size (최소 = 1)    

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

  

3, NotBlank @

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

마찬가지로 @NotNull 외에, 클래스가 정의 된 클래스는 isValid 방법이있다 :

경우 (CharSequence를 == NULL) {// 호기심    
  반환 사실;     
}      
charSequence.toString ()를 호출 () 트리밍 길이 ()> 0..;

  

객체가 null 문자열 인 경우 경우 방법 만있는 경우와 제로의 거짓 손질 길이를 반환 할 때 흥미롭게도,이 true를 반환합니다. 문자열이 때 방법 널 (null)이지만, @NotBlank 주장 문자열이 null이되지 않도록 또한, @NotBlank 이후 @NotNull을 포함하는 경우에도 true를 돌려줍니다.

  


 

 

 

  

추천

출처www.cnblogs.com/xinruyi/p/11257663.html