Могу ли я использовать BeanValidation для самих аннотаций?
Я работаю над процессором аннотаций и мне стало любопытно.
Есть ли смысл аннотировать подобное и проверять в процессоре аннотаций?
@Retention(value = RUNTIME)
@Target(value = {FIELD, METHOD, PARAMETER})
public @interface BitProperty {
@Min(1)
@Max(31)
int scale() default 31;
}
1 ответ
Я даже не уверен, что это должно делать? Каковы будут ваши ожидания? Когда работает процессор аннотаций, вы хотите, чтобы выполнялась проверка и аннотации с недопустимыми значениями параметров (например, scale > 31
) сгенерировать исключение нарушения ограничения, которое, в свою очередь, прервет обработку аннотаций?
Самая большая проблема здесь в том, что процессор аннотаций не имеет дело с Annotation
экземпляры, а точнее с AnnotationMirrow
и другие классы в пределах javax.lang.model.element
пакет. Bean Validation и Hibernate Validator не предназначены для работы с этим отражающим API. Так что нет, это не сработает.