Sobes.tech
Junior
106
questionbank

Что произойдет, если обратиться к полю nullable объекта в Kotlin?

Ответ от нейросети

sobes.tech AI

Если обратиться к полю nullable объекта без проверки на null, произойдет исключение NullPointerException (NPE).

Для безопасного обращения можно использовать следующие подходы:

  1. Оператор безопасного вызова (?.): Возвращает null, если объект равен null, иначе выполняет вызов.

    // Предположим, user? is User?
    val userName: String? = user?.name
    
  2. Оператор не-null утверждения (!!): Явно подтверждает, что объект не является null. Если он null, выбрасывается NullPointerException.

    // Использовать осознанно, может привести к NPE
    val userName: String = user!!.name
    
  3. Оператор Elvis (?:): Предоставляет значение по умолчанию, если объект слева от оператора ?: равен null.

    val userName: String = user?.name ?: "Unknown User"
    
  4. Блоки if или when: Явная проверка на null.

    if (user != null) {
        val userName = user.name
    } else {
        // Обработка case user is null
    }
    
  5. Функции let, run, apply, with с безопасным вызовом:

    user?.let {
        // `it` inside this block is non-nullable `User`
        val userName = it.name
    }
    

Выбор подхода зависит от логики программы и желаемого поведения в случае, если объект равен null. Чаще всего рекомендуется использовать оператор безопасного вызова (?.) или оператор Elvis (?:) для избежания NPE. Оператор !! следует использовать с осторожностью.