Търсих решение за по-долу изискване -
- Изходните файлове се записват с персонализирана анотация на метод
- Тялото на метода се нуждае от малка вариация въз основа на анотацията.
- Изходният файл не трябва да се променя, но входът към компилатора трябва да бъде модифициран изходен файл
Разгледах API по-долу -
- javax.annotation.processing - Обработка на анотация.
- javax.lang.model.* - Езиков модел, използван при обработката на анотации и API на Compiler Tree
- com.sun.source.* - API на дървото на компилатора.
Мислех да проектирам това, като следвам:
- Напишете процесор за обработка на анотации
- Генерирайте дървото на компилатора
- Редактирайте дървото на компилатора по време на изпълнение, без да засягате оригиналния изходен файл
- Доставяне на дървото на компилатора
API на Compiler Tree изглежда обещаващ, когато дава достъп до com.sun.source.tree.MethodTree
Въпреки това изглежда, че API на дървото на компилатора е само за четене. Не мога да разбера как да изпълня стъпки 3 и 4
Има ли някакъв API за това, който мога да приема, за да изпълня задачата
ЗАБЕЛЕЖКА: Търся само техника за манипулиране на изходния код. Без манипулиране на байт код по време на изпълнение / AOP
Околна среда: Java 6