Sobes.tech
Junior

Какво се случва, ако се обърнете към поле на обект, който може да бъде null?

sobes.tech AI

Отговор от 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("Потребителят е null")
        }
    }
    
  • Оператор за безопасно извикване (?.):
    fun printUserName(user: User?) {
        println(user?.name) // Ще изведе null, ако user == null, иначе името
    }
    
  • Оператор Елвис (?:):
    fun printUserName(user: User?) {
        val userName = user?.name ?: "Стандартно име" // Ще присвои "Стандартно име", ако user?.name == null
        println(userName)
    }
    
  • Типове без null (в Kotlin):
    // Този метод приема само не-nullов обект User
    fun printUserName(user: User) {
        println(user.name) // Гарантирано не null
    }