在我正在编写的 Scala 代码中,我有一个Map[String, AnyRef]
. 当我尝试使用以下方法初始化 Map 时,Scala 抱怨它期待 aMap[String, AnyRef]
但值为 a Map[String, Any]
:
val myMap: Map[String, AnyRef] =
Map("foo" -> true, "bar" -> false)
我知道我可以改用以下内容:
val myMap: Map[String, AnyRef] =
Map("foo" -> true.asInstanceOf[AnyRef], "bar" -> false.asInstanceOf[AnyRef])
我在范围内声明了以下内容:
implicit def booleanToAnyRef(value: Boolean): AnyRef = value.asInstanceOf[AnyRef]
但编译器仍然抱怨。
编译器不应该使用隐式方法将原始布尔值转换为AnyRef
值吗?除了(丑陋的)之外,还有什么方法x.asInstanceOf[AnyRef]
可以让这些转换?