Scala 2.8.1 неявно конвертируется в java.util.List> - PullRequest
1 голос
/ 20 декабря 2010

У меня есть структура данных Scala, созданная со следующим:

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

Я бы хотел неявно преобразовать его (используя scala.collection.JavaConversions или scala.collection.JavaConverters) в java.util.List<java.util.Map<String, Object>> для передачи Java-метода, который ожидает последнего.

Возможно ли это?

Я уже создал следующий метод, который делает это, но мне было интересно, может ли это быть выполнено автоматически компилятором?

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

Ответы [ 2 ]

4 голосов
/ 21 декабря 2010

Вы не хотите, чтобы подобное многоуровневое преобразование происходило по волшебству.Вы можете немного улучшить свою собственную конверсию, хотя бы эстетически.

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])
4 голосов
/ 20 декабря 2010

Как насчет письма

implicit def convertToJava...

?

...