Назад к вопросам
Junior
67
questionbank

Что произойдет, если обратиться к полю объекта, который может быть равен null?

Sobes Copilot

Получайте ответы в реальном времени

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

sobes.tech AI

NullPointerException (NPE). Происходит, когда пытаешься вызвать метод или обратиться к полю объекта, ссылка на который равна null.

Пример:

data class User(val name: String)

fun printUserName(user: User?) {
    // Если user == null, здесь произойдет NullPointerException
    println(user.name)
}

Чтобы избежать NPE, можно использовать:

  • Проверки на null:
    fun printUserName(user: User?) {
        if (user != null) {
            println(user.name)
        } else {
            println("User is null")
        }
    }
    
  • Оператор безопасного вызова (?.):
    fun printUserName(user: User?) {
        println(user?.name) // Выведет null, если user == null, иначе имя
    }
    
  • Оператор Элвиса (?:):
    fun printUserName(user: User?) {
        val userName = user?.name ?: "Default Name" // Присвоит "Default Name", если user?.name == null
        println(userName)
    }
    
  • Ненулевые типы (в Kotlin):
    // Этот метод принимает только ненулевой объект User
    fun printUserName(user: User) {
        println(user.name) // Гарантировано не null
    }