如何将Scala命令行参数传递给Java方法?

时间:2014-01-10 10:25:19

标签: java scala command-line-arguments

我有一段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。谢谢!

1 个答案:

答案 0 :(得分:2)

根据section 4.6.2 of scala language specification,要使用重复参数(T... args)(如果是java)或(args: T*)使用scala将列表/数组提供给函数,则应将参数标记为序列参数通过_*类型注释。

在这种特殊情况下,B.test(args: _*)将起作用。