JavaConversions对象提供了用于在Scala和Java集合之间来回转换的一组方法。
给目标值显式地指定一个类型来触发转换 例如:
import scala col lec ti JavaConversions._ val props: scala.collection.mutable.Map[String, String] = System .getProperties()
如果你担心那些不需要的隐式转换也被引人的话,只引入需要的即可 例如:
import scala.collection.JavaConversions.propertiesAsScalaMap
注意这些转换产出的是包装器,让你可以使用目标接口来访问原本的值。举例来说,如果你用
val props: scala.collection.mutable.Map[String, String] = System.getProperties()
那么props就是一个包装器,其方法将调用底层的Java对象。如果你调用
props ("com.horstmann.scala")= "impatient"
那么包装器将调用底层Properties对象的put("com.horstmann.scala", "impatient")
。
从Scala集合到Java集合的转换:
隐式函数 | 从scala.collection的类型 | 到java.util的类型 |
---|---|---|
asJavaCollection | Iterable | Collection |
asJavaIterable | Iterable | Iterable |
asJavaIterator | Iterator | Iterator |
asJavaEnumeration | Iterator | Enumeration |
seqAsJavaList | Seq | List |
mutableSeqAsJavaList | mutable.Seq | List |
bufferAsJavaList | mutable.Buffer | List |
setAsJavaSet | Set | Set |
mutableSetAsJavaSet | mutable.Set | Set |
mapAsJavaMap | Map | Map |
mutableMapAsJavaMap | mutable.Map | Map |
asJavaDictionary | Map | Dictionary |
asJavaConcurrentMap | mutable.ConcurrentMap | concurrent.ConcurrentMap |
从Java集合到Scala集合的转换:
隐式函数 | 从java.util的类型 | 到scala.collection的类型 |
---|---|---|
collectionAsScalaIterable | Collection | Iterable |
iterableAsScalaIterable | Iterable | Iterable |
asScalaIterator | Iterator | Iterator |
enumerationAsScalaIterator | Enumeration | Iterator |
asScalaBuffer | List | mutable.Buffer |
asScalaSet | Set | mutable.Set |
mapAsScalaMap | Map | mutable.Map |
dictionaryAsScalaMap | Dictionary | mutable.Map |
propertiesAsScalaMap | Properties | mutable.Map |
asScalaConcurrentMap | concurrent.ConcurrentMap | mutable.ConcurrentMap |