2

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

我知道一个开源项目 Lombok,它可以自动将 setter 和 getter 方法添加到一个类中,并且 IDE(eclipse) 现在可以找到新添加的方法。所以有人可以告诉我它是如何实现的吗?

4

1 回答 1

3

lombok的源代码在 github 上。Afaik 它使用javac 注释处理功能的内部 api 。注释处理器只应该能够创建新文件,而不是修改当前编译的文件。通过类型转换、修补类加载器和覆盖一些方法,lombok 能够修改当前编译的 java 文件的抽象语法树并添加方法或源代码。它有效,但我认为它是一种黑客行为,并不太依赖它。

如果你想修改创建的类文件,我认为像cglibasm这样的字节码重写框架是更干净的解决方案。

于 2013-03-12T10:48:46.443 回答