2010-04-26 102 views
1

我正在使用javax.validation.Validator以及基于注释的验证的相关类。约束验证

Configuration<?> configuration = Validation.byDefaultProvider().configure(); 
ValidatorFactory factory = configuration.buildValidatorFactory(); 
Validator validator = factory.getValidator(); 

Set<ConstraintViolation<ValidatableObject>> constraintViolations = validator.validate(o); 
for (ConstraintViolation<ValidatableObject> value : constraintViolations) { 
    List< Class< ? extends ConstraintValidator< ? extends Annotation,?>>> list = 
      value.getConstraintDescriptor().getConstraintValidatorClasses(); 
} 

我得到一个编译错误,指出:

类型不匹配:不能从列表<类<转换?将ConstraintValidator <捕获#4的?,?>>>扩展到列表<类<?扩展ConstraintValidator <?扩展注释,?>>>

我错过了什么?

+0

你有没有想出解决办法? – coder 2011-05-16 22:57:31

回答

0

如果你不介意与ConstraintValidator<?, ?>正在(即你不需要ConstraintValidator<? extends Annotation, ?>),这应该工作:

Configuration<?> configuration = Validation.byDefaultProvider().configure(); 
ValidatorFactory factory = configuration.buildValidatorFactory(); 
Validator validator = factory.getValidator(); 

Set<ConstraintViolation<ValidatableObject>> constraintViolations = validator.validate(o); 
for (ConstraintViolation<ValidatableObject> value : constraintViolations) { 
    List< Class< ? extends ConstraintValidator<?,?>>> list = 
      value.getConstraintDescriptor().getConstraintValidatorClasses(); 
}