我有一个scala程序,其中包含一个扩展Function2
的单例。我想知道它是否可以序列化这个对象并将其发送到Java程序,以便它可以在该程序上使用?
我注意到Java没有Function2
类或接口,所以我不确定这是否可行。
如果无法发送到Java程序,如何将其发送到不同的Scala程序并正确使用?
单身人士看起来像这样。
object add extends Function2[Int, Int, Int] {
override def apply(a: Int, b: Int): Int = a + b
}
答案 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
,以及您自己的库。您不需要序列化对象。