1

我有一个使用以下内容创建的 Scala 数据结构:

List(Map[String, Anyref]("a" -> someFoo, "b" -> someBar))

我想将它(使用or )隐式转换为 a以传递给期望后者的 Java 方法。scala.collection.JavaConversionsscala.collection.JavaConvertersjava.util.List<java.util.Map<String, Object>>

这可能吗?

我已经创建了以下方法,但想知道它是否可以由编译器自动完成?

import scala.collection.JavaConversions._
def convertToJava(listOfMaps: List[Map[String, AnyRef]]):
  java.util.List[java.util.Map[String, Object]] = {
  asJavaList(listOfMaps.map(asJavaMap(_)))
}
4

2 回答 2

4

怎么写

implicit def convertToJava...

?

于 2010-12-20T14:02:51.643 回答
4

您不希望这种多级转换通过魔术发生。不过,您可以在自己的转换上有所改进,至少在美学上是这样。

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])
于 2010-12-21T05:28:39.887 回答