使用龙目岛计划安全吗?[关闭]


436

如果您不知道Project Lombok可以通过诸如生成带有注释的getter和setter之类的东西,甚至像通过@Data生成之类的简单JavaBean来解决Java的某些烦恼。它确实可以为我提供帮助,尤其是在50个不同的事件对象中,您最多需要构造7个不同的字段并使用getter将其隐藏。我可以用它删除几乎一千行代码。

但是,我担心从长远来看,这将是一个令人遗憾的决定。##Java Freenode当我提到它时,Flamewars会在该频道中爆发,提供的代码片段会混淆可能的助手,人们会抱怨缺少JavaDoc,将来的提交者可能还是将其全部删除。我真的很喜欢正面的东西,但我担心负面的东西。

因此:在任何大小的项目中使用Lombok是否安全?积极的影响值得消极的吗?


5
添加jdk9编译器支持#985在我评论时尚未解决。Java 9的打包系统要求添加很多CLI选项,javac以打开对内部sun.*类的访问权限((
gentnkoa


这些天来,项目使用内置在javac中的注释预处理器来完成类似的事情-这种机制是标准的,并且可以期望好的程序员知道这一点。
托尔比约恩Ravn的安徒生

Answers:


181

听起来您已经决定Lombok项目为您提出的新项目提供了重要的技术优势。(从一开始就很清楚,我对Lombok项目并没有特别的看法。)

在某些项目(开源或其他明智的方式)中使用Project Lombok(或任何其他改变游戏规则的技术)之前,需要确保项目利益相关者对此表示同意。这包括开发人员,以及任何重要的用户(例如正式或非正式的赞助者)。

您提到了以下潜在问题:

当我提到它时,Flamewars将在## Java Freenode频道中爆发,

简单。忽略/不参加火焰战争,或者干脆不提龙目岛。

提供代码段会混淆可能的助手,

如果项目策略是使用Lombok,那么可能的助手将需要习惯它。

人们会抱怨缺少JavaDoc,

那是他们的问题。任何人都不会在自己的头脑中试图将其组织的源代码/文档规则严格地应用于第三方开源软件。项目团队应自由设置适合于所使用技术的项目源代码/文档标准。

FOLLOWUP -Lombok开发人员认识到不为合成的getter和setter方法生成Javadoc注释是一个问题。如果这是您项目的主要问题,那么一种替代方法是创建并提交Lombok补丁来解决此问题。 )

而且将来的提交者可能还是将其全部删除。

没开!如果商定的项目策略是使用Lombok,则应无偿破坏Lombok代码的提交者,并在必要时撤回其提交权。

当然,这是假设您已从利益相关者(包括开发人员)那里买入。它假设您已准备好争论自己的事业,并适当地处理了不可避免的反对声音。


77
作为Lombok开发人员,我可以说生成Javadoc在技术上是可行的。如果您对如何实现它有任何聪明的主意,请参加Google组。我的意思是,仅生成标准文本不是那么有用。像getFoo一样,返回foo,setFoo设置foo?那有什么帮助?
Roel Spilker

177
我想说,javadoc for bean getters / setters弊大于利。这些方法遵循一个很好理解的约定,不需要将其添加到javadoc中。只会增加噪音。仅当getter和setter进行了意外操作(例如,有副作用)时,才向其添加文档。
GaryF

9
我刚刚意识到,javadoc注释可能涉及这样一个事实,即如果您为大型代码生成javadoc,则getter和setter根本不会出现。解决该问题的方法是在您的delomboked代码上运行javadoc。
Roel Spilker

14
@GaryF真的吗?如何记录该值是否可以为null?还是数值的允许范围?还是字符串值的允许长度和/或格式?还是字符串值适合呈现给最终用户?或在属性名称无法完全解释时记录该属性的实际含义?(JList.getLayoutOrientationJList.setLayoutOrientation浮现在脑海。)
VGR

21
@VGR我同意您通常所说的,但是在特定情况下更好的解决方案是更好的命名而不是评论。即getCreationDategetDueDate。在可能的情况下,命名优先于注释。
GaryF

850

今天刚开始使用Lombok。到目前为止,我喜欢它,但是我没有提到的一个缺点是重构支持。

如果您使用注释了一个类@Data,它将基于字段名称为您生成getter和setter。如果您在另一个类中使用这些吸气剂之一,则确定该字段的命名不正确,它将找不到这些吸气剂和设置器的用法,并将旧名称替换为新名称。

我想这将必须通过IDE插件而不是Lombok来完成。

更新(13年1月22日)
使用Lombok 3个月后,我仍然建议大多数项目使用它。但是,我确实发现了另一个与上面列出的缺点类似的缺点。

如果你有一类,说MyCompoundObject.java的是有2名成员,都标注有@Delegate,说myWidgetsmyGadgets,当你调用myCompoundObject.getThingies()从另一个类,这是不可能知道它是否委托给Widget或者Gadget因为你不能再跳到源在IDE中。

使用Eclipse的“生成委托方法...”可以为您提供相同的功能,并且同样快捷,并且可以进行源代码跳转。不利的一面是,它的样板代码使您的源代码混乱,从而使重点从重要的东西上移开。

更新2(2013年2月26日)
5个月后,我们仍在使用Lombok,但我还有其他烦恼。当您试图使自己熟悉新代码时,缺少声明的getter和setter会变得很烦人。

例如,如果我看到一个叫做的方法,getDynamicCols()但是我不知道它的含义,则我有一些额外的障碍可以跳过,以确定该方法的目的。有些障碍是Lombok,有些则缺少Lombok智能插件。障碍包括:

  • 缺少JavaDocs。如果我使用javadoc字段,则希望getter和setter可以通过Lombok编译步骤继承该javadoc。
  • 跳转到方法定义会将我跳转到该类,但不会跳转到生成该getter的属性。这是一个插件问题。
  • 显然,除非生成或编写方法,否则您无法在getter / setter中设置断点。
  • 注意:此参考搜索不是我最初认为的问题。您确实需要使用启用“大纲”视图的透视图。对于大多数开发人员而言,这不是问题。我的问题是我正在使用Mylyn过滤Outline视图,因此我没有看到这些方法。 缺少参考文献搜索。如果要查看谁在打电话getDynamicCols(args...),我必须生成或编写setter以便能够搜索参考。

更新3(13年7月7日)
我猜想学习在Eclipse中使用各种处理方式。您实际上可以在Lombok生成的方法上设置条件断点(BP)。使用Outline视图,可以右键单击该方法以Toggle Method Breakpoint。然后,当您单击BP时,可以使用调试Variables视图查看所生成的方法将其命名为什么参数(通常与字段名称相同),最后,使用该Breakpoints视图右键单击BP并选择Breakpoint Properties...添加条件。真好

更新4(13年8月16日)
当您在Maven pom中更新Lombok依赖项时,Netbeans不喜欢它。该项目仍然可以编译,但是文件被标记为存在编译错误,因为它看不到Lombok正在创建的方法。清除Netbeans缓存可以解决此问题。不确定是否像Eclipse中一样有“清理项目”选项。次要问题,但希望将其公开。

更新5(2014年1月17日)
Lombok并不总是与Groovy配合使用,或者至少与groovy-eclipse-compiler。您可能必须降级编译器的版本。 Maven Groovy和Java +龙目岛

更新6(14年6月26日)
警告。龙目岛(Lombok)会让人上瘾,如果您从事的项目由于某种原因而无法使用,那会惹恼您。根本不使用它可能会更好。

更新7(14年7月23日)
这是一个有趣的更新,因为它直接解决了安全问题了OP要求的采用Lombok。

从v1.14开始,@Delegate注释已降级为“实验”状态。详细信息记录在其站点上(Lombok Delegate Docs)。

问题是,如果您正在使用此功能,则您的退出选项受到限制。我将选项视为:

  • 手动删除 @Delegate注释并生成/编码委托代码。如果您在注解中使用属性,则要困难一些。
  • Delombok包含 @Delegate注释并可能添加回您想要的注释中。
  • 切勿更新Lombok或维护叉子(或使用体验功能)。
  • Delombok您的整个项目,然后停止使用Lombok。

据我所知,Delombok没有选择删除注释子集的选项;至少对于单个文件而言,它是全部还是什么都不是。我打开了一张票以请求此功能带有Delombok标志的,但我不希望在不久的将来有。

更新8(2014年10月20日)
如果您可以选择使用Groovy,则它具有Lombok的大部分相同优点,并且还提供了包括@Delegate在内的其他功能。如果您认为很难将创意推销到现有的功能上,请查看@CompileStatic@TypeChecked注释,看看这是否对您的事业有所帮助。实际上,Groovy 2.0版本的主要焦点是静态安全性。

更新9(15年9月1日)
龙目岛仍在积极维护和增强,这预示着采用的安全性水平。该@Builder注解是我最喜欢的新功能之一。

更新10(15年11月17日)
这似乎与OP的问题没有直接关系,但是值得分享。如果您正在寻找可帮助您减少编写的样板代码数量的工具,则还可以查看Google Auto-特别是AutoValue。如果您查看他们的幻灯片,则列表Lombok可能是他们尝试解决的问题的一种可能的解决方案。他们为龙目岛列出的缺点是:

  • 插入的代码是不可见的(您无法“看到”它生成的方法)[编辑说明-确实可以,但是仅需要反编译器]
  • 编译器黑客是非标准且脆弱的
  • “在我们看来,您的代码不再是真正的Java”

我不确定我对他们的评价有多同意。考虑到幻灯片中记录的AutoValue的缺点,我会坚持使用Lombok(如果没有Groovy的话)。

更新11(2016年2月8日)
我发现Spring Roo具有一些类似的注释。当我发现Roo仍然是一件事情时,我感到有些惊讶,并且找到注释的文档有些粗糙。移除也不像去龙目岛那样容易。龙目岛似乎是更安全的选择。

更新12(16年2月17日)
在试图提出为什么可以安全地将Lombok用于我当前正在从事的项目的论据时,我发现v1.14配置系统中添加了一块金牌!这意味着您可以配置项目以禁止团队认为不安全或不受欢迎的某些功能。更好的是,它还可以使用不同的设置创建目录特定的配置。这太棒了。

更新13(2016年10月4日)
如果这种事情对您很重要,Oliver Gierke认为将Lombok添加到Spring Data Rest中是安全的。

更新14(17年9月26日)
正如@gavenkoa在对OPs问题的评论中指出的那样,JDK9编译器支持尚不可用(问题#985)。对于Lombok团队来说,听起来也不是一件容易的事。

更新15(18年3月26日)
Lombok更改日志指示从v1.16.20起“即使在#985仍然打开的情况下,现在也可以在JDK1.9上编译 lombok” 。

但是,为了适应JDK9而进行的更改需要进行一些重大更改。全部隔离到配置默认值的更改。他们引入了重大更改,这有点令人担忧,但是该版本仅增加了“增量”版本号(从v1.16.18到v1.16.20)。由于这篇文章是关于安全性的,因此,如果您有一个yarn/npm类似的构建系统,该系统会自动升级到最新的增量版本,则可能会引起粗鲁的觉醒。

更新16(19年9月9日)

我所知,似乎JDK9问题已解决,Lombok可与JDK10甚至JDK11一起使用。

从安全性方面来看,我注意到的一件事情是,从v1.18.2到v1.18.4的更改日志列出了两个项目BREAKING CHANGE!我不确定在semver“补丁”更新中如何发生重大变化。如果使用自动更新补丁程序版本的工具,可能会出现问题。


49
谢谢,我认为这是OP真正想要的信息,而不是哲学上的回应。
chaostheory

14
UPDATE 6感觉很像Scala :)
mauhiz

5
@mauhiz和Groovy。如果我不得不在至少不能使用Groovy或Scala进行测试的地方工作,那么我可能会在短时间内退出。
Snekse

8
我真的很喜欢您随着时间的流逝做出的更新。特别是对于这种风格的问题/回答,它确实很有帮助。
MattG '16

4
似乎Java 9支持现已可用。您可以更新您的答案。 stackoverflow.com/questions/41520511/…–
leventunver,

115

继续使用Lombok,如果需要,您可以在以后通过代码“ delombok” http://projectlombok.org/features/delombok.html


5
@fastcodejava,当您说“ +1 for x”时,x应该是列出的要点之一,而不是唯一的要点:)
KeremBaydoğan2014年

7
在这种特殊情况下,我将“ +1 for delombok”解释为“万岁delombok”。我喜欢。
佐尔坦

1
“ +1 for delombok”-当您想在将要提供给客户的项目中使用lombok时尤其如此。您可以利用lombok的所有优势,并让您的客户看到一个没有lombok依赖的干净罐子。
fwonce

对于认为“好吧,我会尝试龙目岛,如果我不喜欢它的人,我只会去德伦伯克”的人们:请三思。运行Delombok是一个痛苦的过程。生成的代码将像使用Lombok一样工作……但也将是一团糟。
AJPerez

75

我个人(因此主观地)发现,与IDE /自己的复杂方法(例如哈希码和equals)的实现相比,使用Lombok使我的代码更能表达我要实现的目标。

使用时

@EqualsAndHashCode(callSuper = false, of = { "field1", "field2", "field3" })

与任何IDE /自己的实现相比,保持Equals&HashCode的一致性并跟踪要评估的字段要容易得多。当您仍然定期添加/删除字段时,尤其如此。

这同样适用于所述@ToString注释和它的参数,其清楚地传达关于包括/排除字段,吸气剂或字段访问的和阉羊使用或不呼叫所需的行为super.toString()

再次通过用@Getter或注释整个类@Setter(AccessLevel.NONE)(并可选地覆盖任何不同的方法),可以立即清楚哪些方法可用于这些字段。

好处不断。

在我看来,这不是减少代码,而是清楚地传达您想要实现的目标,而不是必须从Javadoc或实现中弄清楚。减少的代码只会使发现任何不同方法的实现变得更加容易。


21
补充一点:过去,由于不匹配的equals / hashCode实现,切换到Lombok实际上已经解决了一些复杂的错误,并且在添加字段时忘记了更新现在生成的方法的情况。这些潜在的好处应该能够平衡您提到的大多数负面因素。
蒂姆(Tim)2010年

25

龙目岛很棒,但是...

Lombok不产生注释的规则,因为它不会生成新的源文件。这意味着如果其他注解处理器希望使用getter / setter或其他方法,则不能与其他注解处理器一起使用。

批注处理需要一系列回合。在每一轮中,每个人都有一个转身。如果在回合完成后发现任何新的Java文件,则将开始另一回合。这样,注释处理器仅生成新文件的顺序就无关紧要。由于lombok不会生成任何新文件,因此不会启动新的回合,因此依赖lombok代码的某些AP不会按预期运行。使用mapstruct时,这对我来说是一个巨大的痛苦,而delombok-ing并不是一个有用的选择,因为它会破坏日志中的行号。

我最终破解了一个可与lombok和mapstruct一起使用的构建脚本。但是我想放弃龙目岛,因为它很笨拙-至少在这个项目中。我一直在其他东西上使用龙目岛。


22

我阅读了有关龙目岛的一些意见,实际上我在某些项目中使用了它。

好吧,在与龙目岛的第一次接触中,我留下了不好的印象。几周后,我开始喜欢它。但是几个月后,我发现使用它存在许多小问题。因此,我对龙目岛的最终印象并不是那么积极。

我这样思考的原因:

  • IDE插件依赖性。Lombok的IDE支持是通过插件实现的。即使在大多数时候工作良好,您也始终是此插件的人质,这些插件将在以后的IDE 甚至语言版本中得到维护(Java 10+将加速语言的开发)。例如,我尝试从Intellij IDEA 2017.3更新到2018.1,但我无法这样做,因为实际的lombok插件版本存在一些问题,我需要等待插件更新...如果您遇到此问题,这也是一个问题希望使用不支持Lombok插件的其他替代IDE。
  • “查找用法”问题。。使用Lombok时,您看不到生成的getter,setter,构造函数,构建器方法等。因此,如果您计划找出IDE中这些方法在项目中使用的位置,您将无法仅查看拥有此隐藏方法的类。
  • 如此容易以至于开发人员不在乎破坏封装。我知道Lombok确实不是问题。但是我看到开发人员的更大趋势是不再控制不再需要显示哪些方法。因此,很多时候它们只是在复制和粘贴@Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor注释块而没有考虑该类真正需要公开的方法。
  • 建造者痴迷 ©。我发明了这个名字(马丁·福勒,下车)。开个玩笑,一个Builder很容易创建,即使一个类只有两个参数,开发人员也喜欢使用它@Builder而不是构造函数或静态构造方法。有时他们甚至尝试在lombok Builder内部创建一个Builder,从而产生类似的奇怪情况MyClass.builder().name("Name").build().create()
  • 重构时的障碍。例如,如果您使用a @AllArgsConstructor并需要在构造函数上添加一个以上的参数,则IDE无法帮助您在实例化该类的所有位置(大多数是测试)中添加此额外的参数。
  • 混合龙目岛与具体方法。您不能在所有情况下都使用Lombok创建一个getter / setter / etc。因此,您将在代码中看到这两种方法的混合。一段时间后,您已经习惯了这一点,但是感觉就像是对这种语言的一种破解。

就像另一个答案所说的那样,如果您对Java详细信息感到生气,并使用Lombok进行处理,请尝试Kotlin。


8
我会说选择Kotlin还是选择纯Java。与不键入Java代码所节省的时间相比,处理Lombok问题所花费的时间可能更多。
jediz

1
只因为冗长而讨厌Java的人是他的错,因为他没有让自己的代码变得不太冗长...
Nikolas

17

也存在长期维护风险。首先,我建议阅读有关Lombok实际工作方式的信息,例如,这里的开发人员提供一些答案。

官方网站还列出了一些缺点,包括Reinier Zwitserloot的这段话:

完全是骇客。使用非公开API。进行过分强制转换(知道在Javac中运行的注释处理器将获得JavacAnnotationProcessor的实例,该实例是AnnotationProcessor(一个接口)的内部实现,因此恰好有几个额外的方法可用于获取实时AST) 。

在eclipse上,它可以说是更糟(而且更可靠)-Java代理用于将代码注入eclipse语法和解析器类,这当然完全是非公共API,并且完全不受限制。

如果您可以使用标准API执行lombok的操作,那么我会那样做,但您不能这样做。尽管如此,我还是为开发在Java 1.6上运行的eclipse v3.5的eclipse插件开发了它的价值,并且没有做任何更改,也对在Java 1.5上运行的eclipse v3.4起作用,因此它并不完全脆弱。

总而言之,虽然Lombok可以为您节省一些开发时间,但是如果有向后兼容的javac更新(例如,缓解漏洞),则Lombok可能会让您陷入旧版Java的困扰,而开发人员则争先恐后地更新它们的用法内部API。这是否是严重的风险显然取决于项目。


8
好吧,以防万一您不再使用Lombok,只需运行delombok并继续开发即可。
vladich

3
这就像学习驾驶眼镜,然后在驾驶考试前将其丢掉。如果您的团队习惯于使用Lombok编写的代码,并且由于重大更改而突然被迫更改其流程,那将对正在进行的项目产生巨大影响。完全避免这种风险并使用不依赖未记录功能的框架或像Scala这样的语言提供即开即用功能的语言是否更好?
dskrvk

15

我知道我迟到了,但我无法抗拒这种诱惑:喜欢龙目岛的任何人也应该看看Scala。您在龙目岛发现的许多好主意都是Scala语言的一部分。

关于您的问题:让您的开发人员尝试Lombok绝对比Scala容易。试试看,如果他们喜欢,请尝试Scala。

就像一个免责声明:我也喜欢Java!


我喜欢Scala和Lombok,但看不到您在谈论哪些想法。\ @SneakyThrows,\ @数据...
sinuhepop

2
@sinuhepop生成getter和setter就像案例类。不可变的功能是Scala固有的,关于您自己的方法的丰富API也是内置的Scala功能。
sorencito

5
也可以尝试Kotlin
jediz

15

我在几乎所有项目中都使用了Lombok,但已将其删除了一年。最初,这是一种非常干净的开发方式,但是为新团队成员设置开发环境并不是一件容易且直接的事情。当它变得头疼时,我才将其移除。但这是一项很好的工作,需要更加简单的设置。


27
您能详细说明一下头痛吗?
凯文·韦尔克2012年

2
Eclipse的安装非常简单。只是“ java -jar lombok.jar”。

14
我认为设置新开发人员最困难的部分是意识到您需要设置Lombok。没有消息说“ Lombok尚未设置”或类似的东西。相反,您会得到未定义的奇怪消息,例如“ setFoo”。如果龙目岛(Lombok)教育不属于您的新开发者在线培训过程的一部分,那么将会引起很大的困惑。
Snekse 2014年

@Snekse。我不确切知道哪个lombok插件版本引入了intellij想法通知和建议(错误日志中会弹出红色消息和建议,以敦促用户启用注释,甚至提供指向配置部分的链接),但是Idea 2016.3并且0.13.16插件版本包含了此有用的支持。
jtonic '16

2
lombok idea插件(我使用的版本为0.13.16)最近引入了支持,以通知用户未配置注释处理器,并且还提供了指向配置设置部分的链接以启用apt。请参阅的屏幕截图。postimg.org/image/5tm2zzvkh
jtonic

11

当我向团队展示项目时,热情很高,所以我认为您不应该害怕团队的反应。

  • 就ROI而言,集成起来非常容易,并且不需要更改其基本形式的代码。(只需向您的班级添加一个注释)

  • 最后,如果您改变主意,则可以运行unlombok,或让您的IDE创建这些setter,getter和ctor(我想一旦他们看到您的pojo变得多么清晰,没人会要求它们)


10

我对Lombok的看法是,它仅提供用于编写​​bolilerplate Java代码的快捷方式。
在使用快捷方式编写bolilerplate Java代码时,我将依赖于IDE提供的此类功能-就像在Eclipse中一样,我们可以转到菜单Source> Generate Getters和Setters来生成getter和setter。
我不会像Lombok这样的库:

  1. 它污染的代码与另一种语法的间接层(读@Getter@Setter等注释)。与其学习Java的另一种语法,不如切换到本机提供Lombok语法的任何其他语言。
  2. Lombok需要使用Lombok支持的IDE来处理您的代码。这种依赖性给任何不平凡的项目带来了相当大的风险。开源的Lombok项目是否有足够的资源来继续为各种Java IDE的不同版本提供支持?
  3. 开源Lombok项目是否有足够的资源来继续为将来将要发布的Java新版本提供支持?
  4. 我也很担心Lombok可能会引入与广泛使用的框架/库(例如Spring,Hibernate,Jackson,JUnit,Mockito)的兼容性问题,这些框架/库在运行时会与您的字节码一起工作。

总而言之,我不希望通过Lombok为Java增添趣味。


一个反驳的论点是-如果有人使用IDE构建POJO的所有模板,但后来又将其中一个getters / setters重命名或删除了,该怎么办?该类不再是严格的POJO,但是必须通过仔细检查该类的所有方法来推断。我发现lombok注释至少可以避免这种情况,并使类的业务逻辑更加突出。您的所有积分均有效;但是,只是想提供这种想法。龙目岛通过@ Data / @ Value / @ Utility / @ Builder进一步完善了这一点
Adam Hughes,

10

想要使用lombok,@ToString但很快在Intellij IDEA中重建项目时遇到随机编译错误。必须先进行几次编译,然后增量编译才能成功完成。

在Intellij IDEA 12.1.6和13.0中对lombok 1.12.2和0.9.3进行了尝试,而jdk 1.6.0_39和1.6.0_45下没有任何lombok插件。

必须手动从delomboked源复制生成的方法,并将lombok搁置,直到更好的时间为止。

更新资料

仅在启用并行编译的情况下会发生此问题。

提出了一个问题:https : //github.com/rzwitserloot/lombok/issues/648

更新资料

mplushnikov于2016年1月30日评论:

较新版本的Intellij不再存在此类问题。我认为可以在这里关闭。

更新资料

如果可能,我强烈建议从Java + Lombok切换到Kotlin。Lombok彻底解决了所有Java问题后,便设法解决了该问题。


6

我将LombokJackson CSV遇到了问题,当我将对象(Java Bean)编组为CSV文件(重复的列)时,我删除了Lombok的@Data批注,并且编组工作正常。


2

我不推荐。我曾经使用过它,但是当我使用NetBeans 7.4时,它弄乱了我的代码。我必须删除项目中所有文件中的lombok。有delombok,但是我如何确定它不会弄乱我的代码。我必须花几天的时间才能删除lombok,并恢复为普通的Java样式。我太辣了...


那么,您建议对JavaBeans进行注释吗?
IgorGanapolsky

龙目岛团队已更新其代码。尽管如此,我还需要等待几个月才能准备就绪
Harun

0

我还没有尝试过使用Lombok-它是我的清单上的第二名,但听起来似乎Java 8造成了重大问题,并且截至一周前,补救工作仍在进行中。我的来源是https://code.google.com/p/projectlombok/issues/detail?id=451


仅作记录,该问题已迁移至github.com/rzwitserloot/lombok/issues/524
seanf 2015年

1
我在Java 8上的lombok没有任何问题
Alexey

我使用lombok已有几个月的时间,并且可以在Java 8上很好地工作。我正在从事的项目已经使用lombok多年了,到目前为止没有遇到任何问题。
kevenlolo '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.