Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java编译器将AST编译为类文件之前,我可以修改AST吗_Java_Javac - Fatal编程技术网

在java编译器将AST编译为类文件之前,我可以修改AST吗

在java编译器将AST编译为类文件之前,我可以修改AST吗,java,javac,Java,Javac,我想在源代码编译到类文件之前添加一些东西(例如:add方法或字段)。但我不知道怎么做。我有什么办法可以做到吗 我知道一个开源项目Lombok,它可以自动向类添加setter和getter方法,IDE(eclipse)现在就可以找到新添加的方法。有人能告诉我它是如何实现的吗。Afaik它使用的是的内部api。注释处理器只能创建新文件,不能修改当前编译的文件。通过类型转换、修补类加载器和重写某些方法,lombok能够修改当前编译的java文件的抽象语法树,并添加方法或源代码。它是有效的,但我认为它是

我想在源代码编译到类文件之前添加一些东西(例如:add方法或字段)。但我不知道怎么做。我有什么办法可以做到吗

我知道一个开源项目Lombok,它可以自动向类添加setter和getter方法,IDE(eclipse)现在就可以找到新添加的方法。有人能告诉我它是如何实现的吗。Afaik它使用的是的内部api。注释处理器只能创建新文件,不能修改当前编译的文件。通过类型转换、修补类加载器和重写某些方法,lombok能够修改当前编译的java文件的抽象语法树,并添加方法或源代码。它是有效的,但我认为它是一个黑客,而不是依赖它。
如果您想修改创建的类文件,我认为字节码重写框架(如or)是更干净的解决方案。

看一看。它可能满足您的需求,尽管它不是编译器扩展。@Henrik感谢您的帮助。