【问题标题】:Project Lombok vs. Eclipse templates / code generationProject Lombok 与 Eclipse 模板/代码生成
【发布时间】:2011-02-06 16:24:15
【问题描述】:

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

【问题讨论】:

  • 目前,jar 的唯一运行时需要是使用 @SneakyThrows。对于所有其他功能,您只需要在构建时使用 jar。
  • 看起来很像 SpringRoo,但要简单得多。

标签: eclipse code-generation lombok


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • @javaguy - 据我所知,它已插入编译器。
    • @javaguy 代码在 .class 文件中“存在”(由 lombok 生成),它在 .java 文件中作为文本“不存在”,从而消除了许多样板和混乱.
    【解决方案3】:

    优点:

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

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

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

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

    缺点:

    • 目前还没有名称重构:重命名value 将不会(还)重命名getValue()setValue()
    • 5 月会稍微减慢 ecplise 的速度
    • toString 输出不如 apache commons 中的 ToStringBuilder 好

    【讨论】:

      【解决方案4】:

      想到的很少:

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

      虽然依赖性问题不容忽视,但您已将其从您的问题中排除。

      【讨论】:

        【解决方案5】:

        Eclipse EMF 提供了一些非常方便但 Lombock 尚不支持的功能:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-14
          • 2014-06-17
          • 1970-01-01
          • 2011-02-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多