Scala 2.8.1隐式转换为java.util.List
我使用以下内容创建了Scala数据结构:Scala 2.8.1隐式转换为java.util.List,java,scala,scala-collections,Java,Scala,Scala Collections,我使用以下内容创建了Scala数据结构: List(Map[String, Anyref]("a" -> someFoo, "b" -> someBar)) 我希望使用scala.collection.JavaConversions或scala.collection.JavaConverters隐式地将其转换为java.util.List,并将其传递给期望后者的java方法 这可能吗 我已经创建了下面的方法来实现它,但是我想知道编译器是否可以自动完成它 import scala.c
List(Map[String, Anyref]("a" -> someFoo, "b" -> someBar))
我希望使用scala.collection.JavaConversions或scala.collection.JavaConverters隐式地将其转换为java.util.List,并将其传递给期望后者的java方法
这可能吗
我已经创建了下面的方法来实现它,但是我想知道编译器是否可以自动完成它
import scala.collection.JavaConversions._
def convertToJava(listOfMaps: List[Map[String, AnyRef]]):
java.util.List[java.util.Map[String, Object]] = {
asJavaList(listOfMaps.map(asJavaMap(_)))
}
写作怎么样
implicit def convertToJava...
写作怎么样
implicit def convertToJava...
?您不希望这种多级转换神奇地发生。不过,你可以通过自己的转换来提高一点,至少在美学上是这样
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])
你不希望这种多级转换发生在魔术中。不过,你可以通过自己的转换来提高一点,至少在美学上是这样
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])
这是有道理的,但我希望Scala会自动完成,这样我就可以保存4行代码:-。这是一个非常特殊的情况,所以我认为这4行代码是可以的。一般来说,过度使用隐式转换会导致令人惊讶的结果,因此Scala库谨慎使用它们是明智的。这是有道理的,但我希望Scala会自动这样做,这样我就可以节省4行代码:-。这是一个非常特殊的情况,所以我认为这4行代码是可以的。一般来说,过度使用隐式转换会导致令人惊讶的结果,因此Scala库谨慎使用它们才是明智的。我给你的投票只是为了导入别名行-不知道有人能做到这一点!谢谢我来看看你的解决方案。@Esko:我已经开始使用导入别名来重命名java.*classes:import java.lang.{Integer=>JInteger}对于那些罕见的情况,我必须强制自动装箱:x:JInteger。我只是为了导入别名行而向上投票-不知道有人可以这么做!谢谢我来看看您的解决方案。@Esko:我已经开始使用导入别名来重命名java.*classes:import java.lang.{Integer=>JInteger}用于我必须强制自动装箱的罕见情况:x:JInteger。