将“String *”(Scala)转换为“String ...”(Java)

问题描述 投票:1回答:2

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

我感谢您的帮助。

java scala variadic-functions scala-java-interop
2个回答
6
投票

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

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

Scala有一个特殊的语法,用于指定Seq的内容应该展开并传递给函数。你在: _*的名字后面写Seq

所以,它应该是这样的:

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

试试看!


2
投票

这应该工作:

javaMethod(args: _*)

例:

val args = Array("1", "2")
String.format("%s %s", args: _*)
© www.soinside.com 2019 - 2024. All rights reserved.