/ / Чому asInstanceOf не кидає ClassCastException? - шкала, безпека типу

Чому як InstanceOf не викидає ClassCastException? - скала, тип безпеки

Чому 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