让我说我有一个名为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。