Как преобразовать Scala scala.List
в Java java.util.List
?
java
scala
scala-java-interop
Алексей Бараноски
источник
источник
Ответы:
Scala List и Java List - два разных зверя, потому что первый неизменяем, а второй - изменчив. Итак, чтобы перейти от одного к другому, вам сначала нужно преобразовать список Scala в изменяемую коллекцию.
В Scala 2.7:
Начиная с Scala 2.8:
Однако
asList
в этом примере нет необходимости, если ожидаемым типом является JavaList
, поскольку преобразование неявное, как показано в последней строке.источник
scala.collection.JavaConverters
с 2.12 поНе уверен, почему об этом не упоминалось раньше, но я думаю, что наиболее интуитивно понятный способ - вызвать
asJava
метод декоратора JavaConverters непосредственно в списке Scala:источник
Подводя итог предыдущих ответов
Предположим, у нас есть следующее
List
:Если вы хотите быть явным и точно сказать, что вы хотите преобразовать:
Если вы не хотите преобразований совместного управления и позволяете компилятору выполнять неявную работу за вас:
Вам решать, как вы хотите управлять своим кодом.
источник
Начиная
Scala 2.13
с пакета, пакетscala.jdk.CollectionConverters
предоставляетasJava
через сутенерSeq
и заменяет пакетыscala.collection.JavaConverters/JavaConversions
:источник
Довольно старые вопросы, хотя я отвечу, учитывая, что большинство предложений устарели.
источник
object JavaConversions in package collection is deprecated (since 2.12.0): use JavaConverters
Обновить
со scala 2.9.2:
результат
источник
Для одиночных вызовов простейшим решением может быть выполнение вручную:
Производительность не измерял.
источник
Выполнение предложенного выше действия дает неизменный список даже на стороне Java. Единственное рабочее решение, которое я нашел, это следующее:
источник
Начиная с Scala 2.12.0 JavaConversions устарела.
Итак, самым простым решением для меня было:
источник
import scala.collection.JavaConverters._
на 2.12.4