Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 2.8.1隐式转换为java.util.List_Java_Scala_Scala Collections - Fatal编程技术网

Scala 2.8.1隐式转换为java.util.List

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

我使用以下内容创建了Scala数据结构:

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。