2010-04-11 111 views
13

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

+1

目前,只有运行时需要的jar如果使用@SneakyThrows。对于所有其他功能,您只需在构建时使用该jar。 – 2010-04-12 08:35:52

+0

看起来非常像SpringRoo,但更简单。 – 2010-10-26 15:58:01

回答

21

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

4

很少会想到:

  • 它是基于注释,因此没有良好的传统项目仍处于前期Java5中(delombok可以帮助)。实际上,它需要使用javac v1.6编译器。
  • 它仍然有局限性regarding multiple constructors

的依赖问题不应被忽视,虽然,但你已经从你的问题排除它。

12

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

+0

如果代码不存在,它如何在eclipse中编译? – javaguy 2011-02-01 18:54:04

+0

@javaguy - 它插入编译器,据我所知。 – Bozho 2011-02-01 20:52:47

+0

@javaguy在.class文件(由lombok生成)中的代码是'there',它不在你的.java文件中的文本中,因此删除了大量的boiler-plate和杂乱。 – Ivin 2014-10-11 15:13:28

6

优点:

  • 非常容易使用
  • 类是更清洁( '没有样板代码'),尤其是“struct'状内部类收缩到最低限度:

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

    这将同时创建getter和setter,toString()和包含这两个变量的正确hash()/ equals()方法。 与@Value的变体创建一个不可变的结构(没有setters,所有字段final)。

  • 无需生成/当你改变字段(getter方法,setter方法,的toString,哈希,等于)
  • 用手工编码的方法无干扰删除代码:在需要的地方,你自己特定的二传手只需添加到类。龙目岛跳过这一点,并产生一切

缺点:

  • 没有名字的重构,但:以上重命名value会(还)没有重命名getValue()setValue()
  • 月减慢ecplise略有
  • toString输出不如从Apache公共ToStringBuilder输出不错
0

Eclipse的EMF提供了一些功能,这是非常方便的,其Lombock还不支持:

  • 强大通知mechanims得到了解发生在你的情况下
  • 没有Java反射通用的API。访问和修改实例时没有强烈参考类型
  • 基于命令和API的编辑
  • 模型之间的交叉引用:创建并加载模型树,EMF通过为交叉引用创建代理来处理加载。这样可以节省巨大的域树
  • 还有更多的内存和提升性能...