Что произойдет, если обратиться к полю nullable объекта в Kotlin?
Ответ от нейросети
sobes.tech AI
Если обратиться к полю nullable объекта без проверки на null, произойдет исключение NullPointerException (NPE).
Для безопасного обращения можно использовать следующие подходы:
-
Оператор безопасного вызова (
?.): Возвращаетnull, если объект равенnull, иначе выполняет вызов.// Предположим, user? is User? val userName: String? = user?.name -
Оператор не-null утверждения (
!!): Явно подтверждает, что объект не являетсяnull. Если онnull, выбрасываетсяNullPointerException.// Использовать осознанно, может привести к NPE val userName: String = user!!.name -
Оператор Elvis (
?:): Предоставляет значение по умолчанию, если объект слева от оператора?:равенnull.val userName: String = user?.name ?: "Unknown User" -
Блоки
ifилиwhen: Явная проверка наnull.if (user != null) { val userName = user.name } else { // Обработка case user is null } -
Функции
let,run,apply,withс безопасным вызовом:user?.let { // `it` inside this block is non-nullable `User` val userName = it.name }
Выбор подхода зависит от логики программы и желаемого поведения в случае, если объект равен null. Чаще всего рекомендуется использовать оператор безопасного вызова (?.) или оператор Elvis (?:) для избежания NPE. Оператор !! следует использовать с осторожностью.