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

标签 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 部分将来自另一个库。谢谢!

最佳答案

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

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

关于java - 如何将 Scala 命令行参数传递给 Java 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21041809/

相关文章:

scala - 在 Scala 的 O(sqrt(n)) 中检查数字是否为质数

ant - 如何通过命令行设置日志级别

node.js - 使用 node.js 时是否有很好的 V8 命令行参数引用

java - 如何知道应用程序是否仍然与编辑器中的当前代码保持同步?

scala - 使用 Scalaz 7 zipWithIndex/group enumeratees 避免内存泄漏

scala - 是否可以在JUnit环境中使用ScalaTest BDD语法?

python - 有没有办法在 argparse 中添加一个已经创建的解析器作为子解析器?

java - 如何更改 JPanel 的边框(内部部分)颜色?

java - 如何在 IE 中使用 selenium 记录测试用例

java - 使用 xstream 注入(inject)恶意对象