Я пытаюсь создать свою собственную аннотацию для локальных переменных, но я просто не понимаю, как аннотации, такие как @NotNull
или @Null
, фактически реализованы в коде. Я посмотрел на реальный файл, вот @NotNull
:Реализация валидации Javax
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = { })
public @interface NotNull {
String message() default "{ javax.validation.constraints.NotNull.message }";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
@interface List {
NotNull[] value();
}
}
Но я не вижу где-нибудь, где она проверяет, есть ли что-то null
или нет. Где происходит фактическая проверка?
да я получить эту часть, я на самом деле сделал аннотации, который использует этот валидатор. Но мне интересно, как именно был реализован '@ NotNull', поскольку я не вижу никаких валидаторов в любом месте. – Richard
Обновленный ответ с объяснением встроенных ограничений. –