我想要什么:
我有什么:
问题:
观:
提前感谢您提供任何提示,建议和解决方案,
直到
答案 0 :(得分:1)
Project Lombok似乎通过注释处理器修改二进制文件。还有一篇很好的文章解释了它是如何运作的here。
项目Lombok将自己作为注释处理器挂钩到编译过程中。但龙目岛不是你的普通注释处理器。通常,注释处理器仅生成新的源文件,而Lombok修改现有的类。
我不认为通过'普通'注释处理器修改类文件是微不足道的,但引用帖子:
Lombok中的“黑客”是严格来说,注释处理规范不允许您修改现有的类。注释处理API不提供用于更改类的AST的机制。 Project Lombok的聪明人通过一些未发表的javac API解决了这个问题。由于Eclipse使用内部编译器,因此Lombok还需要访问Eclipse编译器的内部API。
使用这些非标准注释处理API的缺点是每个注释处理器实现(Javac,Eclipse,其他?)需要以不同方式处理,并且它们可以跨版本,因为它们是非标准的。
如果您真的想将此作为注释处理器,请查看Lombok源代码并了解它们是如何做到的。但是,如果可以采用另一种方式(编译后步骤,具有类文件转换器的代理),那么这些其他方法之一将更加便携。