使用源代码操作进行Java注释处理

use*_*134 9 java apt annotations java-compiler-api

我一直在寻找以下要求的解决方案 -

  • 源文件使用自定义注释在方法上编写
  • 方法体需要基于注释的一点变化.
  • 源文件不应更改,但输入到编译器应修改源文件

我看了下面的API -

  • javax.annotation.processing - 注释处理.
  • javax.lang.model.* - 注释处理和编译器树API中使用的语言模型
  • com.sun.source.* - 编译器树API.

我想通过以下方式设计:

  1. 编写注释处理器
  2. 生成编译器树
  3. 在运行时编辑编译器树而不影响原始源文件
  4. 将树提供给编译器

编译器树API似乎在允许访问com.sun.source.tree.MethodTree的位置

但是,编译器树API似乎是只读的.我无法弄清楚如何完成步骤3和4

是否有任何API可用于完成任务

注意:我正在寻找唯一的源代码操作技术.没有运行时字节代码操作/ AOP

环境:Java 6

小智 5

标准注解处理API不支持直接修改源代码。然而,修改源代码的一些效果可以通过生成带注释类型的超类或子类来实现。下面的博客文章展示了该技术的一个示例:

“通过注释处理的属性”