From the scaladoc:
Note that the success of a cast at runtime is modulo Scala's erasure semantics. Therefore the expression 1.asInstanceOf[String] will throw a ClassCastException at runtime, while the expression List(1).asInstanceOf[List[String]] will not. In the latter example, because the type argument is erased as part of compilation it is not possible to check whether the contents of the list are of the requested type.
If you try to access the variable or map the conversion it correclty throws an exception:
scala> List("a").asInstanceOf[List[Int]]
res0: List[Int] = List(a)
scala> res0
res1: List[Int] = List(a)
scala> res0(0)
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
List("a").map(_.asInstanceOf[Int])
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…