当前位置: 首页 > 知识库问答 >
问题:

龙目岛是如何运作的?

扶隐水
2023-03-14

我今天遇到了lombok。
我非常想知道它是如何工作的。
一篇Java Geek的文章给出了一些线索,但对我来说并不是很清楚:

Java6删除了apt,使javac能够管理注释,简化了流程,以获得更简单的单步计算。这是龙目岛所走的路。

在Java6中,编译过程可能是:javac->apt->lombok apt process->使用ASM读取类文件并添加set/get方法?

你能给我看更多有关机械装置的细节吗?

共有1个答案

邬楚青
2023-03-14

正如Sean Patrick Floyd所说,Lombok确实针对内部API进行编码。但是,由于lombok只涉及编译阶段,因此声称lombok只会在sun VM上运行具有误导性。它只能在ecj或Sun的javac上编译。然而,绝大多数的虚拟机,如果它们有编译器的话,都是这两种类型中的一种。例如,Apple VM附带了sun javac,因此lombok在Mac上运行良好。例如,大豆VM也是如此。

对于javac来说,我们确实必须坚持他们的更新,部分原因是目前正在对他们的编译器进行大量的工作,我们只需要对eclipse的许多版本的支持做一个小的调整。因此,当我们针对内部API进行代码时,它们是相对稳定的位。

如果lombok所做的事情可以在不借助内部API的情况下完成,那么我们本来会做一些其他的事情,但却做不到,所以我们借助内部API的用法。

NB:我是龙目岛的主要开发者之一,所以,我可能有点偏见:P

 类似资料:
  • 我在gradle项目中使用lombok,希望创建一个jar文件,但每次我执行jar任务(无论是在控制台还是eclipse ide中触发)时,我都会发现错误,我的lombok导入在我使用lombok注释的类中找不到。输出示例: 搜索了一段时间后,我发现有一个适用于gradle和lombok的插件,但在使用较新的gradle版本编译时并不真正需要。我的gradle版本是3.4.1和lombok 1.6

  • 最近,我对“龙目岛”产生了浓厚的兴趣。而我想通过阅读源代码来了解它更多。 谁能给点建议吗?喜欢先读哪个包/类,还是逻辑的流程? 多谢了。

  • 问题内容: 我有一堂课,看起来像这样: 在这里,我不得不写a,因为如果我想在使用Lombok时返回Optional,则必须声明为。这将生成一个接受的生成器方法! 还有其他方法可以使用lombok 吗? 问题答案: 答案是否定的,可能永远也不会。 您可能做错了:-) 并不是预防的替代品,也不是预防的奇特方法。这表示该问题无法回答,例如:空人员列表的平均年龄是多少。 绝对不应传递,而应尽快由调用代码取

  • 我有一个名为Address的类,如下所示: 在这里,我不得不编写生成器和Getter,因为如果我想在使用Lombok时返回一个Optional,我必须将第2行声明为Optional 是否有其他方法可以将lombok与

  • 我试着在IntelliJ上使用Lombok和Maven和VRaptor,但它不起作用。 我已经在stackoverflow中阅读了一些信息,但没有解决我的问题,我已经在Intellij中启用了注释处理器,但仍然一无所获。 我也试图从命令行(Windows)编译它,但没有成功。 我还尝试在没有maven的情况下创建另一个项目,添加库,创建一些用于测试的类,它可以完美地工作、编译和运行。 有什么帮助吗

  • 我在Intellij遇到了一个奇怪的问题。我正在使用Lombok(1.18.2)、IntelliJ(2018.2.2)和JUnit 5在gradle 4多模块项目中。 我花了好几个小时来复制这个。 > 运行所有具有覆盖率测试用例。 移除龙目镜并在此之后生成吸气剂和定型剂也没有效果。 尝试了一切来解决这个问题(启用注释处理器、Lombok插件、清理构建),但没有成功。 编辑1: Root build