我想在将源代码编译到类文件之前添加一些东西(例如:添加方法或字段)。但我不知道该怎么做。有什么方法可以做到吗?
我知道一个开源项目Lombok,它可以自动为类添加setter和getters方法,IDE(eclipse)现在可以找到新添加的方法。所以有人可以告诉我它是如何实现的?
答案 0 :(得分:2)
source code for lombok is on github。 Afaik它使用javac annotation processing feature的内部api。注释处理器只能创建新文件,而不能修改当前编译的文件。通过类型转换,修补类加载器并覆盖一些方法,lombok能够修改当前编译的java文件的抽象语法树并添加方法或源代码。它有效,但我认为这是一个黑客,而不是很依赖它。