¿Convertir Scala Set en Java(java.util.Set)?
type-conversion scala-collections (4)
Dado que Scala 2.12.0 scala.collection.JavaConversions
está en desuso :
Por lo tanto, esta API ha quedado en desuso y, en su lugar, se deben utilizar JavaConverters. JavaConverters proporciona las mismas conversiones, pero a través de métodos de extensión.
Y desde Scala 2.8.1 puede use scala.collection.JavaConverters
para este propósito:
import scala.collection.JavaConverters._
val javaSet = new java.util.HashSet[String]()
val scalaSet = javaSet.asScala
val javaSetAgain = scalaSet.asJava
Tengo un conjunto en Scala (puedo elegir cualquier implementación mientras estoy creando el conjunto. La biblioteca de Java que estoy usando está esperando un java.util.Set [String].
Es la siguiente manera correcta de hacer esto en Scala (usando scala.collection.jcl.HashSet # subyacente):
import com.javalibrary.Animals
var classes = new scala.collection.jcl.HashSet[String]
classes += "Amphibian"
classes += "Reptile"
Animals.find(classes.underlying)
Parece que está funcionando, pero como soy muy nuevo en Scala, quiero saber si esta es la forma preferida (de cualquier otra manera que intento, obtengo un error de falta de coincidencia de tipo):
error: type mismatch;
found : scala.collection.jcl.HashSet[String]
required: java.util.Set[_]
En Scala 2.12 es posible usar: scala.collection.JavaConverters.setAsJavaSet(scalaSetInstance)
Para 2.7.x recomiendo usar: http://github.com/jorgeortiz85/scala-javautils
Si estaba preguntando acerca de Scala 2.8, la interoperabilidad de las colecciones Java es proporcionada por scala.collection.JavaConversions
. En este caso, desea JavaConversions.asSet (...) (hay uno para cada dirección, Java -> Scala y Scala -> Java).
Para Scala 2.7, cada clase scala.collection.jcl que envuelve una colección Java tiene una propiedad underlying
que proporciona la instancia de la colección Java envuelta.