Mik*_*378 1 scala scala-java-interop scala-collections
我使用Scala 2.10.3.
我result.iterator()回来了Iterator<java.util.Map<String, Object>>.(在Java中)
我想将它转换为Scala等价物.
我import scala.collection.JavaConversions._用来试图做到这一点.
但是,它似乎无法考虑类型参数,在这种情况下,它可以转换java.util.Iterator为Scala等效项,但无法转换java.util.Map为Scala等效项.
实际上,此行发生编译器错误:
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()
^
Run Code Online (Sandbox Code Playgroud)
有没有简短的方法来做这个伎俩?
您可以使用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]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
695 次 |
| 最近记录: |