【问题标题】:How to pass Scala command line arguments to a Java method?如何将 Scala 命令行参数传递给 Java 方法?
【发布时间】:2014-01-13 21:06:42
【问题描述】:

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

【问题讨论】:

  • 我手头没有repl 可以验证,但我认为B.test(args:_*) 应该可以工作。
  • @folone 是的,就是这样!
  • 我刚刚测试过,它有效。谢谢!
  • @folone 您应该将其发布为答案,以便可以关闭问题
  • @0__ 对,做到了。

标签: java scala command-line-arguments


【解决方案1】:

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

在这种特殊情况下,B.test(args: _*) 可以工作。

【讨论】:

    猜你喜欢
    • 2010-12-11
    • 2018-11-02
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2019-08-01
    相关资源
    最近更新 更多