我使用了scala immutable map,如下所示。
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] )
无法理解不可变地图行为的四种情况。
答案 0 :(得分:1)
最重要的是:Scala没有像Java那样的原始类型。
Scala的 Double 是一个类,继承自 AnyVal ,拥有自己的方法
但Java的Object 是所有引用类型的基类,又名...... 类
所以,你在这里做的是使用Object作为Double的基类。
在我看来,
Scala的 AnyRef 是Java的对象的相应类型。
Scala的 AnyVal 是Java 原始类型的对应类型。
答案 1 :(得分:1)