В практическом плане небезопасное приведение выдает исключение, если приведение не удается, и безопасное приведение преобразуется в null
, когда операция сбоя завершается неудачей.
val x1: Int? = 1.0 as? Int?
println(x1)
Это печатает:
null
И этот код здесь:
val x: Int? = 1.0 as Int?
выдает исключение:
Exception in thread "main" java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer