将 Scala Set 转换为 Java (java.util.Set)? [英] Convert Scala Set into Java (java.util.Set)?
问题描述
我在 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 Set 转换为 Java (java.util.Set)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!