我有一段Scala代码:
class A {
def main(args: Array[String])
}
然后是一段Java代码:
class B {
public static int test(final String... args) {
System.out.println("This is a test.");
// Use the arguments
...
}
}
我想要的是在A.main中调用B.test,如下所示:
class A {
def main(args: Array[String]) = {
val result = B.test(args)
}
}
上述代码无效,因为类型不匹配。如果有人能提供优雅的解决方案,我们将非常感激。
请仅更改Scala部分,因为Java部分将来自另一个lib。谢谢!
答案 0 :(得分:2)
根据section 4.6.2 of scala language specification,要使用重复参数(T... args)
(如果是java)或(args: T*)
使用scala将列表/数组提供给函数,则应将参数标记为序列参数通过_*
类型注释。
在这种特殊情况下,B.test(args: _*)
将起作用。