Я могу сгенерировать классы с нуля с помощью обработчика аннотаций, но я не мог модифицировать класс, подобный lombok. Я искал сгенерированные классы lombok в студии Android, но ничего не нашел. затем я проверил обзор ломбок через их веб-сайт, а также исследовал его на форумах, но я ничего не понял. Мой вопрос настолько прост. Как lombok объединяет сгенерированный код с минами, когда я использую @Setter, например. Как я могу разработать процессор, такой как?Как Lombok генерирует код на существующий класс?
ответ
Кажется, это дубликат How does lombok work?, и я бы поставил флажок, чтобы закрыть как обман, но ваша щедрость предотвращает это.
Короче говоря, Lombok фактически не генерирует код вообще. Вместо этого он использует неопределенные и недокументированные внутренние вызовы api-реализации компилятора для прямого изменения абстрактного дерева синтаксиса программы между чтением исходного кода и выводом скомпилированного байт-кода. Он может сломаться без предупреждения или уведомления об обновлении до новой версии компилятора, но в настоящее время нет другого пути.
Ломбок генерирует код во время фазы компиляции. Вот учебник для этого http://hannesdorfmann.com/annotation-processing/annotationprocessing101.
Если вы не знакомы с объявлением собственных аннотаций, я настоятельно рекомендую начать работу с аннотациями времени выполнения. Их легче понять и отладить, а ваш код «действует» на этапе выполнения, с которым вы уже знакомы. Короткий учебник для этого: http://docs.oracle.com/javase/1.5.0/docs/guide/language/annotations.html
- 1. Lombok не генерирует код через Maven
- 2. Просмотреть lombok сгенерированный код в IntelliJ IDEA
- 3. неопределенная ссылка на существующий класс
- 4. Как открыть существующий код?
- 5. Добавить задержку на существующий код?
- 6. Пользовательские расширения Lombok требуют пакета Lombok?
- 7. Sonar - Игнорировать код Lombok через пользовательскую аннотацию
- 8. Как запустить код после конструктора в Lombok builder
- 9. Как сделать существующий класс сериализованным
- 10. jsonschema2pojo не генерирует класс
- 11. Создать код с определенным типом элемента на Lombok
- 12. Temasys как изменить существующий код
- 13. Как отредактировать существующий QR-код
- 14. Установить Json Attribute на существующий класс
- 15. Как определить, можно ли тестировать существующий класс?
- 16. Qt Creator undefined ссылка на существующий класс
- 17. Как протестировать класс, который генерирует XML внутри
- 18. Инструмент обработки аннотации добавить код в существующий класс
- 19. Lombok Как настроить getter для поля Boolean?
- 20. Как этот метод flex генерирует класс?
- 21. Стиль существующий класс (PHP Echo)
- 22. C# код, который генерирует javascript на лету
- 23. gcc генерирует 32-битный код на sparc
- 24. Lombok @NonNull vs Validate.notNull
- 25. postLink генерирует неверный код на CakePHP 2.3
- 26. Как добавить разбиение на страницы на существующий код?
- 27. Заменить существующий код
- 28. Наследование Lombok с @EqualsAndHashCode
- 29. optimisng существующий код Python
- 30. Как реорганизовать существующий класс, чтобы стать полиморфным?
Также re «Как я могу разработать процессор, такой как?», Самый простой способ - написать пользовательскую аннотацию Lombok. См. https://binkley.blogspot.co.uk/2014/12/writing-your-own-lombok-annotation.html – Rich