最近,我对“lombok”产生了极大的兴趣。我想通过阅读源代码来更多地了解它。
但尝试之后,我发现这对我来说真的很难。我只发现有“javac”和“ECJ”两个实现。但不明白它是如何端到端工作的。
有人可以给一些建议吗?比如首先阅读哪个包/类,或者逻辑流程?
谢谢。
我目前正在写一篇关于龙目岛的学士论文,所以我会尝试解释一些东西。Lombok 使用 Java 注释处理 [1],它基本上在使用某些注释的节点(例如类、方法)上运行一些预定义的任务。但是,您无法使用此方法修改现有源,这就是 Lombok 使用内部 API 的原因,这些 API 不受支持且可以进行更改。这就是为什么 Lombok 被很多人讨厌,因为它基本上是一个 hack。
要从 Lombok 源开始,有两个主要的包:
我简单介绍一下Oracle编译器部分。这是使用 lombok 注释编译项目期间发生的情况。
黑客的部分在哪里?好吧,如果你查看代码,你会看到一些可疑的强制转换,例如:
(JCCompilationUnit) path.getCompilationUnit();
Run Code Online (Sandbox Code Playgroud)
Lombok 期望接收接口的某些实现,并使用这些内部实现来完成它的任务。
进一步阅读:
[1] http://deors.wordpress.com/2011/10/08/annotation-processors/是很好的教程
[2] lombok 是如何工作的?Lombok 首席开发人员解释了为什么 lombok 使用内部 API
[3] http://notatube.blogspot.cz/2010/12/project-lombok-creating-custom.html关于添加您自己的转换的文章
玩得开心!
| 归档时间: |
|
| 查看次数: |
1598 次 |
| 最近记录: |