龙目岛如何运作?

| 我今天遇到龙目岛。 我很想知道它是如何工作的。 Java极客文章提供了一些线索,但对我来说还不是很清楚:   Java 6删除apt并使Javac可用   管理注释,简化   获得更简单的过程   单步计算。这是   龙目岛采取的路径。 也许在Java 6中,编译过程将是: javac-> apt-> lombok apt进程->读取类文件并使用ASM添加set / get方法? 您能告诉我有关该机制的更多细节吗?     
已邀请:
正如Sean Patrick Floyd所说,Lombok确实针对内部API进行编码。但是,由于lombok仅参与编译阶段,因此误导性声称Lombok将仅在sun VM上运行。它只会在ecj或sun \的javac上编译。但是,如果有的话,绝大部分VM都附带编译器,这就是其中之一。例如,Apple VM附带有库存的sun javac,因此lombok在Mac上运行良好。例如,soylatte VM也是如此。 尽管对于Javac,我们确实必须坚持他们的更新,部分原因是由于目前他们的编译器正在进行大量工作,但在许多版本的eclipse上,我们对eclipse的支持只需要做一点微调。因此,尽管我们针对内部API进行编码,但它们是相对稳定的位。 如果lombok所做的事情可以在不依靠内部API的情况下完成,那么我们会做其他事情,但是不能做到,因此我们在内部API的使用上有所作为。 注意:我是lombok的主要开发人员之一,所以,我可能有点偏见:P     
它使用Java 6中提供的JSR 269可插拔注释处理API。 请注意,“ 0”包含一个名为“ 1”的文件。当“ 2”在编译类路径中看到此文件时,它将运行在编译期间在其中定义的注释处理器。     
除了axtavt的答案之外:Lombok使用的内容比JSR 269 API公开的内容多得多。 Lombok针对a)内部Javac API和b)内部Eclipse API(在单独的处理器中)进行编码。 JSR 269不允许您修改现有的源代码,但是当您将3转换为基础AST节点时,您实际上可以修改AST(这是Lombok所做的事情)。 因此,Lombok是一个巨大的hack,只能在Sun VM(afaik)上运行。它是一款很棒的软件,但也被许多非标准的黑客所讨厌。     
龙目岛项目:创建自定义转换会有所帮助。     

要回复问题请先登录注册