对于以下代码:
object Test {
class MapOps(map: Map[String, Any]) {
def getValue[T](name: String): Option[T] = {
map.get(name).map{_.asInstanceOf[T]}
}
}
implicit def toMapOps(map: Map[String, Any]): MapOps = new MapOps(map)
def main(args: Array[String]): Unit = {
val m: Map[String, Any] = Map("1" -> 1, "2" -> "two")
val a = m.getValue[Int]("2").get.toString
println(s"1: $a")
val b = m.getValue[Int]("2").get
println(s"2: $b")
}
}
Run Code Online (Sandbox Code Playgroud)
val a计算机毫无例外地计算并且控制台打印1: two,但是在计算时val b,它java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer被抛出.
此外,如果我执行
val c = m.getValue[Int]("2").get.getClass.toString …Run Code Online (Sandbox Code Playgroud)