Вы не можете.
Используете ли вы отражение или apt , вы не можете получить доступ к кодовым блокам.
- Через apt вы можете получить доступ ко всему, что можете аннотировать, но вы не можете аннотировать блоки инициализатора (хотя вы можете получить доступ к аннотированной локальной переменной внутри блока инициализатора).
- Посредством отражения невозможно получить доступ к блокам кода (только конструкторы, поля, методы и классы)
Если вы достаточно отчаянны по этому поводу, вам нужно использовать синтаксический анализатор исходного кода, например javaparser , или инструмент байт-кода, например asm . Оба понимают древовидные структуры (первый использует исходные деревья, второй - деревья байт-кода) и может работать со всеми структурами java, включая блоки инициализатора.
Но ваша лучшая ставка, вероятно, AspectJ и это initialization(ConstructorSignature)
pointcut. Есть некоторая ссылка на страницу с указателями , но чтобы действительно ее понять, вам, вероятно, придется прочитать AspectJ в действии Рамниваса Ладдада .