¿Cómo convertir Scala scala.List
en Java java.util.List
?
java
scala
scala-java-interop
Alex Baranosky
fuente
fuente
Respuestas:
Scala List y Java List son dos bestias diferentes, porque el primero es inmutable y el segundo es mutable. Entonces, para pasar de uno a otro, primero debe convertir la Scala List en una colección mutable.
En Scala 2.7:
Desde Scala 2.8 en adelante:
Sin embargo,
asList
en ese ejemplo no es necesario si el tipo esperado es un JavaList
, ya que la conversión es implícita, como lo demuestra la última línea.fuente
scala.collection.JavaConverters
desde las 2.12 en adelanteNo estoy seguro de por qué no se ha mencionado esto antes, pero creo que la forma más intuitiva es invocar el
asJava
método decorador de JavaConverters directamente en la lista de Scala:fuente
Para resumir las respuestas anteriores
Suponiendo que tengamos lo siguiente
List
:Si quiere ser explícito y decir exactamente lo que quiere convertir:
Si no desea controlar las conversiones y dejar que el compilador haga un trabajo implícito por usted:
Depende de usted cómo desea controlar su código.
fuente
A partir
Scala 2.13
, el paquetescala.jdk.CollectionConverters
proporciona aasJava
través de un proxenetaSeq
y reemplaza paquetesscala.collection.JavaConverters/JavaConversions
:fuente
Preguntas bastante antiguas, aunque las responderé, pero la mayoría de las sugerencias están en desuso.
fuente
object JavaConversions in package collection is deprecated (since 2.12.0): use JavaConverters
Actualizar
con scala 2.9.2:
resultado
fuente
Para invocaciones únicas, hacerlo a mano podría ser la solución más simple:
No medí el rendimiento.
fuente
Simplemente haciendo lo propuesto anteriormente produce una lista inmutable incluso en el lado de Java. La única solución de trabajo que he encontrado es esta:
fuente
Desde Scala 2.12.0 JavaConversions ha quedado obsoleto.
Entonces, la solución más simple para mí fue:
fuente
import scala.collection.JavaConverters._
para 2.12.4