java - 约束验证

标签 java generics constraints bean-validation

我正在使用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();  
}

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

Type mismatch: cannot convert from List< Class< ? extends ConstraintValidator< capture#4-of ?,?>>> to List< Class< ? extends ConstraintValidator< ? extends Annotation,?>>>

我错过了什么?

最佳答案

如果您不介意与 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();  
}

关于java - 约束验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2711071/

相关文章:

java - 如何在 JPQL 中对同一个表使用两次连接?

java - Python 还是 Java?对于移动开发和 GUI 应用程序来说什么更好

c# - 公共(public)列表<(<(<'T>)>)>..::..枚举器?

c# - 为什么 .NET 事件有一个对象类型而不是 T 类型的发送者参数?

gradle - 收集 Gradle 项目的依赖约束

java - 从非 Android 设备查找和 Android NSD 服务

java - 媒体播放器对象音量线性增加和减少的Android逻辑错误

c# - 关于 StructLayoutAttribute 中 sizeof(T) 的 CS0233 有什么替代方案吗?

swift - 以编程方式更新约束?

mysql - 如何在 MySQL 中添加此条件的约束?