Чому asInstanceOf не кидає ClassCastException?
scala> List("a").asInstanceOf[List[Int]]
res34: List[Int] = List(a)
Відповіді:
16 за відповідь № 1Від скаладок:
Зауважте, що успіх акторського складу при виконанніСемантика стирання модуля Скала стирається як частина компіляції, неможливо перевірити, чи вміст списку потрібного типу.
Якщо ви спробуєте отримати доступ до змінної або перетворити на конверсію, вона виправляє виключення:
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