【发布时间】:2018-02-20 11:15:29
【问题描述】:
我使用了一个 scala 不可变映射,如下所示。
val d = "4.55"
-
这工作正常。
val properties = Map("title"->"title" , "value" -> d ) -
它从 [String , AnyRef] 转换为 [String, Any]
val properties = Map("title"->"title" , "value" -> d.toDouble ) -
无法从 Double 转换为 Object ,运行时错误
val properties:Map[String,Object] = Map("title"->"title" , "value" -> d.toDouble )为什么对象不能接受 Double?
-
工作正常。
val properties:Map[String,Object] = Map("title"->"title" , "value" -> d.toDouble.asInstanceOf[Object] )
无法理解 Immutable Map 行为的四种场景。
【问题讨论】:
-
我是一名 Java 开发人员,只是路过,但我猜对了(因为 Scala 在 JVM 上运行,也许它可以提供帮助)。在 Java 中,泛型存在类型擦除,因此类型信息仅在编译时出现。我不认为这是全部情况,但可能与这种行为有关。
-
val properties[String, Object] = ...不是有效的 Scala 语法 -
是的,我已经编辑了语法,我忘记了冒号
-
"为什么对象不能接受 java.lang.Double?"可以,但
toDouble返回Double而不是java.lang.Double。 -
@SagarVaghela 带冒号也无效。
标签: scala immutability autoboxing