Чем отличаются операторы cast и safe cast и null? - PullRequest
0 голосов
/ 29 июня 2018

Допустим, у меня есть 2 выражения:

val x: Int? = null as Int?

и

val x: Int? = null as? Int?

Чем они отличаются?

Почему первый из них небезопасен?

1 Ответ

0 голосов
/ 29 июня 2018

В практическом плане небезопасное приведение выдает исключение, если приведение не удается, и безопасное приведение преобразуется в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...