2014-09-28 2 views

ответ

14

От scaladoc:

Обратите внимание, что успех гипса во время выполнения стирания семантики по модулю в Scala. Поэтому выражение 1.asInstanceOf [String] будет вызывать исключение ClassCastException во время выполнения, тогда как список выражений (1) .asInstanceOf [List [String]] не будет. В последнем примере, поскольку аргумент типа удаляется как часть компиляции, невозможно проверить, является ли содержимое списка запрошенным типом.

При попытке доступа к переменной или отобразить преобразование его correclty генерирует исключение:

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 
+2

это интересно – tuxdna