【问题标题】:Does Project Lombok work well with Scala?Project Lombok 是否与 Scala 配合得很好?
【发布时间】:2011-12-08 12:03:23
【问题描述】:

如果我希望我的 Scala 项目与 Java“兼容”,即可以从 Java 代码调用 Scala API(以便非 Scala 程序员也可以贡献),是否可以使用 Project Lombok在Java代码中?还是他们两个关系不好?

我将使用 Scala IDE 在 Eclipse 中进行开发。

编辑:我真正的意思是:Eclipse 中的 Scala 编辑器 会看到 Lombok 生成的代码,还是只看到我真正键入的 Java 代码?

【问题讨论】:

  • 关于您的编辑以及我对 Eclipse 的完全缺乏了解 - 当您使用已编译的 Java 代码作为库时,显然会起作用。所以你的问题只对混合项目感兴趣,而不是混合库。

标签: eclipse scala lombok


【解决方案1】:

我不确定你在问什么,因为 Scala 和 Java 在字节码级别是互操作的,它不关心字节码来自哪里。所以我相信你使用 Lombok 注释的 Java 代码仍然可以从 Scala 程序中调用。

如果你问 Lombok 提供的那些注解是否可以在 Scala 代码中使用,我认为没有意义,因为这些功能大部分是由 Scala itef 提供的。

例如,@Data 的类在 Scala 中可能是 case class

case class Data(name: String, value: Int)

您可以像普通类一样在 Java 代码中访问它。

Data d1 = new Data("someData", 1);  // Using constructor
Data d2 = Data.apply("someData", 1); // Or using factory

Data 将拥有精彩的toStringequalshashcode....等。

【讨论】:

  • +1 我没有这样想,但它确实回答了我一半的问题。我将通过编辑问题来指定我想要的内容。
  • 其实我应该在问之前自己想到的。不好的问题。
【解决方案2】:

scala 编辑器部分将“看到”生成的代码就好了。

lombok 所做的大部分工作都遵循一些规范或其他规范,与 scala 相同。 lombok 偏离的地方是 canEqual 和 equals 实现,顺便说一下,这与 scala 为案例类 IIRC 生成的 exact 相同,所以即使这样也是兼容的 :)

免责声明:我是 lombok 项目的核心贡献者。

【讨论】:

  • 嗯,我目前遇到的问题是我的 scala-test 代码找不到由@RequiredArgsConstructor 生成的构造函数。想知道这是我的设置问题还是错误。
  • 刚刚解决了,Eclipse在Java代码之前编译Scala代码的问题,改变它:Preferences >> Scala >> Compiler >> BuildManager Tab >> Change compileOrder from Mixed to JavaThenScala跨度>
  • @rzwitserloot 在 Scala 案例类上带有 @Data 注释的情况下,您是否建议使用 Javac 而不是 Eclipsec 来编译此类代码?
  • @rzwitserloot 对 scala 中的 lombok @Log4j2 注释有问题,我似乎在 scala 代码中没有得到 log 变量...
  • @Jewels 日志注释在 java 代码中创建了一个私有变量。从 Scala 代码中不可能看到它,这是设计使然。
猜你喜欢
  • 1970-01-01
  • 2010-09-11
  • 1970-01-01
  • 2013-03-02
  • 2021-10-25
  • 1970-01-01
  • 2011-06-08
  • 2011-01-18
  • 1970-01-01
相关资源
最近更新 更多