我使用Scala 2.10.3
我result.iterator()
返回Iterator<java.util.Map<String, Object>>
。 (在Java中)
我想将其转换为Scala等效词
我使用import scala.collection.JavaConversions._
来尝试这个技巧。
但是,它似乎无法考虑类型参数,在这种情况下,它可以将java.util.Iterator
转换为Scala等效项,但无法在Scala等效项中转换java.util.Map
。
确实,此行发生编译错误:
val results: Iterator[Map[String, AnyRef]] = result.iterator()
type mismatch;
found : java.util.Iterator[java.util.Map[String,Object]]
required: scala.collection.Iterator[scala.collection.immutable.Map[String,AnyRef]]
val results: Iterator[Map[String, AnyRef]] = result.iterator()
^
有没有简短的方法来做这个伎俩?
答案 0 :(得分:5)
您可以使用JavaConverters
代替JavaConversions
明确指定要转换的内容,如下所示:
import scala.collection.JavaConverters._
def javaIt: java.util.Iterator[java.util.Map[String, Object]] = ???
def scalaIt = javaIt.asScala map {_.asScala}
// Iterator[scala.collection.mutable.Map[String,Object]]