转换 "String*" (Scala) to/from "String..." (Java)

Converting "String*" (Scala) to/from "String..." (Java)

我正在将一些 Elasticsearch Java API 转换为 Scala。 Java 中有一些方法采用 String... indices 类型的变量,因此我试图提供一个带有 indices: String* 类型变量的 Scala 函数,它封装了 Java ] 方法。 我没有找到将 String* 转换为 String... 的方法。

感谢您的帮助。

这应该有效:

javaMethod(args: _*)

示例:

val args = Array("1", "2")
String.format("%s %s", args: _*)

Scala 与 Java vararg 函数互操作,所以如果您知道参数,您可以提供它们。

但是 Scala String* 将作为 Scala Seq 出现。但是您需要展开 Seq 的内容并将其作为参数提供给 Java 函数。

Scala 有一个特殊的语法来指定 Seq 的内容应该被展开并传递给一个函数。你在 Seq.

的名称后写 : _*

所以,它应该是这样的:

def myScalaFunction( args : String* ) : Unit = {
   javaStringVaragsFunction( args : _* )
}

试试吧!