将 Scala Set 转换为 Java (java.util.Set)? [英] Convert Scala Set into Java (java.util.Set)?

查看:28
本文介绍了将 Scala Set 转换为 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆