scala type-conversion scala-collections scala-2.8 scala-java-interop

¿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)



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.