Преобразование "String *" (Scala) в / из "String ..." (Java) - PullRequest
1 голос
/ 08 апреля 2019

Я конвертирую часть Java API Elasticsearch в Scala.В Java есть несколько методов, которые принимают переменную типа String... indices, поэтому я пытаюсь предоставить функции Scala переменную типа indices: String*, которая инкапсулирует этот метод Java.Я не нашел способ конвертировать String* в String....

Я ценю вашу помощь.

Ответы [ 2 ]

6 голосов
/ 08 апреля 2019

Scala взаимодействует с функциями Java vararg, поэтому, если вы знали аргументы, вы могли бы просто предоставить их.

Но Scala String* станет Scala Seq.Но вы захотите, чтобы содержимое этого Seq было развернуто и предоставлено в качестве аргументов функции Java.

В Scala есть специальный синтаксис для указания, что содержимое Seq должно быть развернуто и переданонаряду с функцией.Вы пишете : _* после имени Seq.

Итак, должно быть что-то вроде этого:

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

Дайте ему попытку!

2 голосов
/ 08 апреля 2019

Это должно работать:

javaMethod(args: _*)

Пример:

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