私が書いている Scala コードには、Map[String, AnyRef]
. 以下を使用して Map を初期化しようとすると、Scala は a を期待しているMap[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]
これらを変換する(醜い)以外の方法はありますか?