Я работаю над разработкой пользовательской аннотации валидации, и аннотация должна быть повторяемой.
"Min.List" может удовлетворить потребности, и я сделал то же самое в своей собственной аннотации.
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = ComboValidator.class)
public @interface Combo {
String dependField();
String controlledField();
Class<? extends Releation> relation() default BaseReleation.class;
String message() default "{combo validation}";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default {};
/**
* Defines several {@link Combo} annotations on the same element.
*
* @see Combo
*/
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@interface List {
Combo[] value();
}
}
Это работает.
На мой взгляд, валидатор создаст другой экземпляр для другого типа, который необходимо проверить.Так что внутри валидатора я могу получить данные из аннотации и сохранить их в поле уровня типа.Но при повторяющихся обстоятельствах аннотирования я замечаю, что создано более одного экземпляра.
Итак, мой вопрос: как и работает @interface List?