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

查看:407
本文介绍了将Scala集转换为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集转换为Java(java.util.Set)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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