Насколько я понимаю, аннотация — это метаданные. который будет выполнять свою работу либо во время компиляции, либо во время выполнения.
Рассмотрим аннотацию @Override, которая гарантирует, что метод определен в суперклассе/интерфейсе, и я переопределяю это. В противном случае компилятор выдает ошибку. Мой вопрос: где написана реальная бизнес-логика этой проверки? Я предполагаю, что это должно быть написано в компиляторе javac, поскольку эта аннотация является частью модуля java.base.
Но что об аннотациях, таких как @PostConstruct (из javax.annotation) и @Getter (из Lombok). Это аннотация, добавленная как зависимость JAR. Ищу реализацию, но не нашел. Например, как вызывается логика @PostConstruct? Как вызывается @Getter, создается метод получения поля и встраивается в файл .class?
Другими словами, где я могу найти механизм капюшона, который управляет поведением аннотаций?
Подробнее здесь: https://stackoverflow.com/questions/790 ... s-behavior