据我了解,注释处理器是Java编译器的“插件”,这意味着注释处理是在编译时完成的。
由于字节码操作也可以在编译时完成,因此在编译时是否可以从注释处理器生成的类中操作字节码?
在编译器实际编译任何东西之前是否进行批注处理,以便在主编译阶段对生成的类进行编译?
或更广泛地说,有人会解释还是将我指向关于javac编译器和注释处理器的执行顺序的Java文档?
谢谢
答案 0 :(得分:0)
注释处理在“解析并输入”之后和“分析并生成”阶段之前进行。请参见compiler overview,以直观地了解编译管道。这意味着在运行注释处理器时,类文件尚不存在。
不是注释处理器也可能不会更改其处理的编译单元的AST。它可能会产生新的类型(虽然作为源代码或字节码,尽管我不知道后者的任何实际示例),但它可能还会创建已处理类型的超类型。