Оператор not-null утверждения (!!) преобразует nullable тип в non-nullable тип во время выполнения. Если значение равно null, он немедленно выбросит KotlinNullPointerException.
val name: String? = getName()
val length = name!!.length // Выбросит KotlinNullPointerException, если name равен null
nullИспользуй !! только когда ты абсолютно уверен, что значение не может быть null в этой точке выполнения, и когда более безопасные альтернативы нецелесообразны.
?.), чтобы избежать падений:
name?.length?:), чтобы задать значение по умолчанию:
val length = name?.length ?: 0if (name != null) {
println(name.length) // Smart cast к non-nullable
}
Оператор !! говорит: "Я гарантирую, что это не null — упадёшь, если я ошибся." К нему нужно относиться как к последнему средству, использовать редко и только при высокой уверенности, так как он меняет безопасность на этапе компиляции на потенциальное исключение во время выполнения.
Оператор !! выполняет проверку на этапе компиляции, чтобы убедиться, что nullable тип содержит ненулевое значение перед преобразованием его в non-nullable тип.
Новый — ещё не проверен сообществом
Вы