Java - 使用任意数量的参数创建Scala函数

时间:2017-03-24 04:10:52

标签: java scala function closures interop

让我说我有一个名为HelloWorld的Scala单例对象,其方法如下:

def abacaba(m: (String) => Unit): Unit = {

}

当我尝试从Java类调用HelloWorld.abacaba时,我的IDE(Intellij)告诉我它想要一个Function1<String, BoxedUnit>类型的对象。这不应该太难;我可以实现抽象方法并将匿名类传递给scala。

现在,让我们说我更改abacaba以要求接受两个字符串的函数:

def abacaba(m: (String, String) => Unit): Unit = {

}

同样,这不是一个问题;我只需要给Scala一个Function2<String, String, BoxedUnit>。但是,当我要求函数接受大量参数时,这不起作用(来自测试,我知道这必须超过22):

def abacaba(m: (String, String, String, String, String, String, String, String, String, String, String, String,String, String,String, String,String, String,String, String, String, String, String) => Unit): Unit = {

}

现在,从Java只需要Object。在这种情况下(虽然我显然永远不必在现实世界中处理这么多参数)如何从我的Java类创建一个合适的Scala函数?我&#39; d不想在Scala中编写实用程序方法或使用Reflection。

0 个答案:

没有答案