在Java中使用Scala Function2对象

时间:2015-04-16 15:37:22

标签: java scala

我有一个scala程序,其中包含一个扩展Function2的单例。我想知道它是否可以序列化这个对象并将其发送到Java程序,以便它可以在该程序上使用?

我注意到Java没有Function2类或接口,所以我不确定这是否可行。

如果无法发送到Java程序,如何将其发送到不同的Scala程序并正确使用?

单身人士看起来像这样。

object add extends Function2[Int, Int, Int] {

  override def apply(a: Int, b: Int): Int = a + b
}

2 个答案:

答案 0 :(得分:2)

Scala以一种旨在支持与Java的互操作性的方式编译为JVM字节码。在这种情况下,如果你有一个SBT构建设置(或者如果你编译你的Scala代码并在你的类路径中包含结果和Scala库jar),你可以写下以下内容:

public class Foo {
  public static void main(String[] args) {
    System.out.println(add.apply(1, 2));
  }
}

这就是全部。你没有得到漂亮的add(1, 2)语法糖,但除此之外它很容易。

在更高级的情况下可能会出现一些并发症,但是有很多关于如何解决这些问题的文档(当然,欢迎您随时提出后续问题)。

答案 1 :(得分:0)

  

我注意到Java没有Function2类或接口,所以我不确定这是否可行。

您只需要在类路径中包含scala-library.jar,其中包含Function2,以及您自己的库。您不需要序列化对象。