Como converter Scala scala.List
em Java java.util.List
?
java
scala
scala-java-interop
Alex Baranosky
fonte
fonte
Respostas:
Scala List e Java List são duas feras diferentes, porque a primeira é imutável e a última é mutável. Portanto, para ir de um para o outro, primeiro você deve converter a Lista Scala em uma coleção mutável.
No Scala 2.7:
Do Scala 2.8 em diante:
Porém,
asList
nesse exemplo não é necessário se o tipo esperado for um JavaList
, pois a conversão é implícita, conforme demonstrado na última linha.fonte
scala.collection.JavaConverters
2.12 em dianteNão sei por que isso não foi mencionado antes, mas acho que a maneira mais intuitiva é invocar o
asJava
método decorator de JavaConverters diretamente na lista Scala:fonte
Para resumir as respostas anteriores
Supondo que temos o seguinte
List
:Se você quiser ser explícito e dizer exatamente o que deseja converter:
Se você não quiser conversões de co-controle e deixe o compilador fazer o trabalho implícito para você:
Depende de você como deseja controlar seu código.
fonte
A partir de
Scala 2.13
, o pacotescala.jdk.CollectionConverters
forneceasJava
por meio de um cafetãoSeq
e substitui os pacotesscala.collection.JavaConverters/JavaConversions
:fonte
Perguntas muito antigas, embora eu vá responder, mas a maioria das sugestões estão obsoletas.
fonte
object JavaConversions in package collection is deprecated (since 2.12.0): use JavaConverters
Atualizar
com scala 2.9.2:
resultado
fonte
Para invocações únicas, fazê-lo manualmente pode ser a solução mais simples:
Eu não medi o desempenho.
fonte
Apenas fazer como proposto acima produz uma lista imutável, mesmo no lado Java. A única solução funcional que encontrei é esta:
fonte
Desde Scala 2.12.0, JavaConversions se tornou obsoleto.
Portanto, a solução mais simples para mim era:
fonte
import scala.collection.JavaConverters._
para 2.12.4