问题描述
我在Scala中有一个Set(我在创建Set时可以选择任何实现.我正在使用的Java库期望使用java.util.Set [String].
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].
以下是在Scala中执行此操作的正确方法(使用scala.collection.jcl.HashSet#underlying):
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)
它似乎正在工作,但是由于我对Scala还是很陌生,所以我想知道这是否是首选方法(我尝试的其他任何方法都遇到类型不匹配的错误):
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[_]
推荐答案
如果您询问Scala 2.8,则Java集合的互操作性由scala.collection.JavaConversions
提供.在这种情况下,您需要JavaConversions.asSet(...)(每个方向都有一个Java-> Scala和Scala-> Java).
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).
对于Scala 2.7,每个包裹Java集合的scala.collection.jcl类都有一个underlying
属性,该属性提供了包裹的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.
这篇关于将Scala集转换为Java(java.util.Set)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!