[英]Scala 2.8.1 implicitly convert to java.util.List<java.util.Map<String, Object>>
I have a Scala data structure created with the following: 我有一个使用以下代码创建的Scala数据结构:
List(Map[String, Anyref]("a" -> someFoo, "b" -> someBar))
I would like to implicitly convert it (using scala.collection.JavaConversions
or scala.collection.JavaConverters
) to a java.util.List<java.util.Map<String, Object>>
to be passed the a Java method that expects the latter. 我想将其隐式转换(使用
scala.collection.JavaConversions
或scala.collection.JavaConverters
)转换为java.util.List<java.util.Map<String, Object>>
传递给Java方法,该方法期望后者。
Is this possible? 这可能吗?
I have already created the following method that does it, but was wondering if it can be done automatically by the compiler? 我已经创建了执行此操作的以下方法,但想知道编译器是否可以自动完成此操作?
import scala.collection.JavaConversions._
def convertToJava(listOfMaps: List[Map[String, AnyRef]]):
java.util.List[java.util.Map[String, Object]] = {
asJavaList(listOfMaps.map(asJavaMap(_)))
}
How about writing 写作怎么样
implicit def convertToJava...
? ?
You don't want this kind of multilevel conversion happening by magic. 您不希望魔术发生这种多级转换。 You can improve a little on your own conversion though, at least aesthetically.
不过,至少在美学上,您可以根据自己的转换进行一些改进。
import java.{ util => ju }
implicit def convert[K, V](xs: List[Map[K, V]]): ju.List[ju.Map[K, V]] = xs map (x => x: ju.Map[K, V])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.