Я искал решение для нижеприведенного требования -
- Исходные файлы записываются с помощью пользовательской аннотации к методу.
- Тело метода нуждается в небольшой вариации на основе аннотации.
- Исходный файл не должен быть изменен, но входные данные для компилятора должны быть изменены исходным файлом
Я посмотрел на API ниже -
- javax.annotation.processing — обработка аннотаций.
- javax.lang.model.* — языковая модель, используемая в обработке аннотаций и API дерева компилятора.
- com.sun.source.* — API дерева компилятора.
Я думал о разработке этого следующим образом:
- Написать процессор аннотаций
- Сгенерируйте дерево компилятора
- Редактируйте дерево компилятора во время выполнения, не затрагивая исходный файл.
- Предоставить дерево компилятору
Compiler Tree API кажется многообещающим, когда он дает доступ к com.sun.source.tree.MethodTree.
Однако API дерева компилятора, по-видимому, доступен только для чтения. Я не могу понять, как выполнить шаги 3 и 4
Есть ли какой-либо API для этого, который я могу использовать для выполнения задачи?
ПРИМЕЧАНИЕ. Я ищу только технику манипулирования исходным кодом. Нет манипулирования байт-кодом во время выполнения / АОП
Среда: Java 6