我已经为这样的验证定义了一个注释:
@Documented
@Constraint(validatedBy = MyValidator.class)
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomValid {
//required methods
}
现在,我想决定" validatedBy"运行时的类。就像我班上有一个领域一样:
public class MyClass {
@MyCustomValid
MyObject myObject;
}
如何在运行时传递ConstraintValidator类。我对不同的情况有不同的实现。
答案 0 :(得分:1)
注释在编译时被编译到代码中,并且它们无法更改,因此您需要一个hack。
创建一个委托给另一个验证器的验证类。需要使用您设计的任何算法在运行时创建委托。请注意,代码可能会同时使用,因此您需要thread-safe initialization。