在java编译器将AST编译为类文件之前,我可以修改AST吗
我想在源代码编译到类文件之前添加一些东西(例如:add方法或字段)。但我不知道怎么做。我有什么办法可以做到吗 我知道一个开源项目Lombok,它可以自动向类添加setter和getter方法,IDE(eclipse)现在就可以找到新添加的方法。有人能告诉我它是如何实现的吗。Afaik它使用的是的内部api。注释处理器只能创建新文件,不能修改当前编译的文件。通过类型转换、修补类加载器和重写某些方法,lombok能够修改当前编译的java文件的抽象语法树,并添加方法或源代码。它是有效的,但我认为它是一个黑客,而不是依赖它。在java编译器将AST编译为类文件之前,我可以修改AST吗,java,javac,Java,Javac,我想在源代码编译到类文件之前添加一些东西(例如:add方法或字段)。但我不知道怎么做。我有什么办法可以做到吗 我知道一个开源项目Lombok,它可以自动向类添加setter和getter方法,IDE(eclipse)现在就可以找到新添加的方法。有人能告诉我它是如何实现的吗。Afaik它使用的是的内部api。注释处理器只能创建新文件,不能修改当前编译的文件。通过类型转换、修补类加载器和重写某些方法,lombok能够修改当前编译的java文件的抽象语法树,并添加方法或源代码。它是有效的,但我认为它是
如果您想修改创建的类文件,我认为字节码重写框架(如or)是更干净的解决方案。看一看。它可能满足您的需求,尽管它不是编译器扩展。@Henrik感谢您的帮助。