我一直在寻找以下要求的解决方案 -
- 源文件使用自定义注释在方法上编写
- 方法体需要基于注释的一点变化.
- 源文件不应更改,但输入到编译器应修改源文件
我看了下面的API -
- javax.annotation.processing - 注释处理.
- javax.lang.model.* - 注释处理和编译器树API中使用的语言模型
- com.sun.source.* - 编译器树API.
我想通过以下方式设计:
- 编写注释处理器
- 生成编译器树
- 在运行时编辑编译器树而不影响原始源文件
- 将树提供给编译器
编译器树API似乎在允许访问com.sun.source.tree.MethodTree的位置
但是,编译器树API似乎是只读的.我无法弄清楚如何完成步骤3和4
是否有任何API可用于完成任务
注意:我正在寻找唯一的源代码操作技术.没有运行时字节代码操作/ AOP
环境:Java 6