13

与 Eclipse 中的代码模板/代码生成相比,Project Lombok是否提供任何好处?是否有任何缺点(除了包括 .jar)?

4

5 回答 5

21

Lombok 的一个优点是,一旦您使用 @Data 批注对类进行了批注,就无需在进行更改时重新生成代码。例如,如果您添加一个新字段,@Data 会自动将该字段包含在 equals、hashCode 和 toString 方法中。使用 Eclipse 生成的方法时,您需要手动进行更改。有时,您可能更喜欢手动控制,但在大多数情况下,我预计不会。

于 2010-04-11T11:15:32.033 回答
12

Lombok 的优势在于代码实际上并不存在——即类更具可读性并且不混乱。

于 2010-04-11T10:54:42.337 回答
6

优点:

  • 非常容易使用
  • 类更简洁(“没有样板代码”),尤其是类似于“结构”的内部类缩小到最低限度:

    @Data private class AttrValue { private String attribute; private MyType value; }

    这将创建 getter 和 setter、toString() 和正确的 hash() / equals() 方法,包括这两个变量。变体@Value创建了一个不可变的结构(没有设置器,所有字段都是最终的)。

  • 更改字段(getter、setter、toString、hash、equals)时无需生成/删除代码
  • 不干扰手动编码的方法:只需将您自己的特定设置器添加到需要的类中。Lombok 跳过此并生成其他所有内容

缺点:

  • 还没有名称重构:value上面的重命名不会(还)重命名getValue()setValue()
  • 可能会稍微减慢 ecplise
  • toString输出不如 apache commons 中的 ToStringBuilder 好
于 2010-11-03T10:16:10.937 回答
4

很少有人想到:

  • 它是基于注解的,因此对于仍处于 Java5 之前的遗留项目没有好处(delombok可以提供帮助)。实际上,它需要使用 javac v1.6 编译器。
  • 它仍然对多个构造函数有限制

不过,依赖性问题不容忽视,但您已将其排除在问题之外。

于 2010-04-11T10:50:44.523 回答
1

Eclipse EMF 提供了一些 Lombock 尚不支持的非常方便的特性:

  • 强大的通知机制,让您了解实例的变化
  • 没有 java 反射的通用 API。无需强引用类型即可访问和修改实例
  • 基于命令和 API 的编辑
  • 模型之间的交叉引用:创建和加载模型树,EMF 通过为交叉引用创建代理来处理加载。这在巨大的域树中节省了内存并提高了性能
  • 以及更多...
于 2015-02-11T13:30:07.393 回答