具有隐式转换的Scala映射

时间:2015-11-23 11:17:24

标签: scala implicit-conversion scala-collections

我有一个Scala案例类和一个相应的Java类。我已经声明了从Scala类到Java类的隐式转换。现在我有一个Scala类的Scala集合,我想将它们转换为Java类的Scala集合。隐式转换是否可能?这是我尝试过的,也许是天真的:

case class PositionScala(latitude: Double, longitude: Double)
object PositionScala {
  implicit def toJava(p: PositionScala): Position = new Position(p.latitude, p.longitude) // Position is the Java class
}
...
val p: List[Position] = routeScala.shape.map(p => p) 
                     // routeScala.shape is List[PositionScala]

但是它没有使用类型不匹配错误进行编译。当然我可以明确地调用转换函数,但它违背了使用隐式转换器的目的。有办法做我想做的事吗?

1 个答案:

答案 0 :(得分:1)

你可以将转换函数'toJava'传递给map函数:

val p: List[Position] = routeScala.shape.map(toJava)