I have a Set in Scala (I can choose any implementation as I am creating the Set. The Java library I am using is expecting a java.util.Set[String].
Is the following the correct way to do this in Scala (using scala.collection.jcl.HashSet#underlying):
import com.javalibrary.Animals
var classes = new scala.collection.jcl.HashSet[String]
classes += "Amphibian"
classes += "Reptile"
Animals.find(classes.underlying)
It seems to be working, but since I am very new to Scala I want to know if this is the preferred way (any other way I try I am getting a type-mismatch error):
error: type mismatch;
found : scala.collection.jcl.HashSet[String]
required: java.util.Set[_]
For 2.7.x I highly recommend using: http://github.com/jorgeortiz85/scala-javautils
If you were asking about Scala 2.8, Java collections interoperability is supplied by
scala.collection.JavaConversions
. In this case, you want JavaConversions.asSet(...) (there's one for each direction, Java -> Scala and Scala -> Java).For Scala 2.7, each scala.collection.jcl class that wraps a Java collection has an
underlying
property which provides the wrapped Java collection instance.Since Scala 2.12.0
scala.collection.JavaConversions
is deprecated:And since Scala 2.8.1 you can use
scala.collection.JavaConverters
for this purpose:In Scala 2.12 it is possible to use :
scala.collection.JavaConverters.setAsJavaSet(scalaSetInstance)