views:

384

answers:

2

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[_]
+9  A: 

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.

Randall Schulz
That is good to know! I was in Scala 2.7.
arnab
+5  A: 

For 2.7.x I highly recommend using: http://github.com/jorgeortiz85/scala-javautils

Viktor Klang