我认为我们可以依靠隐式转换来转换scala.Double
to java.lang.Double
。所以我尝试了以下方法:
import scala.collection.JavaConverters._
object Main extends App {
def main(args: Array[String]) = {
val m = Map("10" -> 20.0)
doSome(m.asJava) //error. Type mismatch found: java.util.Map[String,scala.Double]
// required: java.util.Map[String,java.lang.Double]
doSome2(m.asJava)
}
def doSome(m: java.util.Map[java.lang.String, java.lang.Double]) = println(m)
def doSome2(m: java.util.Map[java.lang.String, Double]) = println(m)
}
为什么不起作用?执行这种转换的惯用方法是什么?
您需要盒装版本double
:
import scala.collection.JavaConverters._
m.mapValues(Double.box).asJava
隐式能够将值转换为Double
to java.lang.Double
,但不是一个Map[String,Double]
to java.util.Map[String,java.lang.Double]
.
String
不需要转换,因为String
is a java.lang.String
while Double
is a double
(原始)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)