转换 "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 : _* )
}
试试吧!
我正在将一些 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 : _* )
}
试试吧!