Java注释处理和字节码操作

问题描述 投票:0回答:1

根据我的理解,注释处理器是Java编译器的“插件”,这意味着注释处理在编译时完成。

由于字节码操作也可以在编译时完成,是否可以在编译时从注释处理器生成的类中操作字节码?

是否在编译器实际编译任何内容之前进行注释处理,以便在主编译阶段编译生成的类?

或者更广泛地说,有人会解释,或者指向有关javac编译器和注释处理器的执行顺序的Java文档吗?

谢谢

annotation-processing bytecode-manipulation
1个回答
0
投票

注释处理在“Parse and Enter”之后和“Analyze and Generate”阶段之前发生。有关编译管道的直观表示,请参阅compiler overview。这意味着在运行注释处理器时,类文件尚不存在。

不是注释处理器也可能不会改变它处理器的编译单元的AST。它可能会产生新的类型(作为源代码或字节码,虽然我不知道后者的任何实际示例),它也可能创建超类型的处理类型。

© www.soinside.com 2019 - 2024. All rights reserved.