Sobes.tech
Junior

Ce se întâmplă dacă accesezi un câmp al unui obiect care poate fi null?

sobes.tech AI

Răspuns de la AI

NullPointerException (NPE). Apare atunci când încerci să apelezi o metodă sau să accesezi un câmp al unui obiect a cărui referință este null.

Exemplu:

data class User(val name: String)

fun printUserName(user: User?) {
    // Dacă user == null, va apărea NullPointerException
    println(user.name)
}

Pentru a evita NPE, poți folosi:

  • Verificări pentru null:
    fun printUserName(user: User?) {
        if (user != null) {
            println(user.name)
        } else {
            println("Utilizatorul este null")
        }
    }
    
  • Operatorul de apel sigur (?.):
    fun printUserName(user: User?) {
        println(user?.name) // Va afișa null dacă user == null, altfel numele
    }
    
  • Operatorul Elvis (?:):
    fun printUserName(user: User?) {
        val userName = user?.name ?: "Nume implicit" // Atribuie "Nume implicit" dacă user?.name == null
        println(userName)
    }
    
  • Tipuri non-null (în Kotlin):
    // Această metodă acceptă doar obiecte User non-null
    fun printUserName(user: User) {
        println(user.name) // Garantat non null
    }