IT袋

当前位置:主页 > 经验教程 > 建站编程 >

详解Lombok的坑

详解Lombok的坑 Lombok使用中需注意的问题(6)

时间:2024-03-25 20:25:01 来源:IT袋 作者:马勇
导读:详解Lombok的坑,他的观点我是非常认同的,给你翻译一波。 他说,导致这个问题的原因是为了消除可能出现的重复初始化。但实际上,与修改 POJO 字段的默认初始化这种

详解Lombok的坑

详解Lombok的坑

他的观点我是非常认同的,给你翻译一波。

他说,导致这个问题的原因是为了消除可能出现的重复初始化。但实际上,与修改 POJO 字段的默认初始化这种完全出乎意料的行为相比,重复初始化的问题要小得多。

当然,解决这个问题的最佳方法是以某种方式摆脱双重初始化,同时又不破坏字段初始化器。

但如果这不可能,或者太难,或者时间太长,那么,就让重复初始化发生吧!

然后把“重复初始化”写到 @Builder.Default javadocs 中,大不了再给这几个字加个粗。

如果有人确实写了一些字段初始化比较复杂的程序,这可能会导致一些问题,但比起该初始化却没有初始化带来的问题要少得多。

在当前的这个情况下,当突然抛出一个空指针异常的时候,我真的很蒙蔽啊。

当然了,也有人提出了不一样的看法:

详解Lombok的坑

这个哥们的核心思路刚刚相反,就是呼吁大家不要把 @Builder 和 @NoArgsConstructor 混着用。

从“点赞数”你也能看出来,大家都不喜欢这个方案。

而这个 BUG 是在 2018 年 7 月 26 日,1.18.2 版本中才最终解决的:

https://projectlombok.org/changelog

详解Lombok的坑

此时,距离这个问题提出,已经过去了一年又四个月。

值得注意的是,在官方的描述里面,用的是 FEATURE 而不是 BUGFIX。

个中差异,你可以自己去品一品。

但是现在 Lombok 都已经发展到 1.18.32 版本了,1.16.x 版本应该没有人会去使用了。

所以,大家大概率是不会踩到这个坑的。

我觉得这个事情,了解“坑”具体是啥不重要,而是稍微走进一下开源项目维护者的内心世界。

开源不易,有时候真的就挺崩溃的。

编译时注解

既然聊到 Lombok 了,顺便也简单聊聊它的工作原理。

Lombok 的核心工作原理就是编译时注解,这个你知道吧?

不知道其实也很正常,因为我们写业务代码的时候很少自定义编译时注解,顶天了搞个运行时注解就差不多了。

其实我了解的也不算深入,只是大概知道它的工作原理是什么样的,对于源码没有深入研究。

但是我可以给你分享一下两个需要注意的地方和可以去哪里了解这个玩意。

以 Lombok 的日志相关的注解为例。

首先第一个需要注意的地方是这里:

相关阅读