Как Lombok генерирует код для существующего класса?

Я могу генерировать классы с нуля с помощью обработчика аннотаций, но я не мог модифицировать класс, подобный lombok. Я искал сгенерированные классы lombok в студии Android, но ничего не нашел. затем я проверил обзор ломбок через их веб-сайт, а также исследовал его на форумах, но я ничего не понял. Мой вопрос настолько прост. Как lombok объединяет сгенерированный код с минами, когда я использую @Setter, например. Как я могу разработать процессор, например?

Ответ 1

Кажется, это дубликат Как работает ломбок?, и я бы отметил, что он закрывается как обман, но ваша награда предотвращает его.

Короче говоря, Lombok вообще не генерирует код. Вместо этого он использует неопределенные и недокументированные внутренние вызовы api-реализации компилятора для прямого изменения абстрактного синтаксического дерева программы между чтением исходного кода и выводом скомпилированного байт-кода. Он может сломаться без предупреждения или уведомления об обновлении до новой версии компилятора, но в настоящее время нет другого способа.

Ответ 2

Ломбок генерирует код во время фазы компиляции. Вот учебник для http://hannesdorfmann.com/annotation-processing/annotationprocessing101.

Если вы все новичок в объявлении своих аннотаций, я настоятельно рекомендую начать работу с аннотациями времени выполнения. Их легче понять и отладить, а ваш код "действует" на этапе выполнения, с которым вы уже знакомы. Короткий учебник для этого: http://docs.oracle.com/javase/1.5.0/docs/guide/language/annotations.html