Преобразование "String*" (Scala) в/из "String..." (Java)

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

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
438
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

javaMethod(args: _*)

Пример:

val args = Array("1", "2")
String.format("%s %s", args: _*)
Ответ принят как подходящий

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

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

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

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

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

Попробуйте!

Другие вопросы по теме