Sobes.tech
Junior

Ce se întâmplă dacă accesezi un câmp nullable al unui obiect în Kotlin?

sobes.tech AI

Răspuns de la AI

Dacă accesați un câmp nullable al unui obiect fără verificare pentru null, va apărea o excepție NullPointerException (NPE).

Pentru acces sigur, puteți utiliza următoarele abordări:

  1. Operatorul de apel sigur (?.): Returnează null dacă obiectul este null, altfel efectuează apelul.

    // Presupunem că user? este un User?
    val userName: String? = user?.name
    
  2. Operatorul de afirmare non-null (!!): Confirmă explicit că obiectul nu este null. Dacă este, se aruncă NullPointerException.

    // Folosiți conștient, poate duce la NPE
    val userName: String = user!!.name
    
  3. Operatorul Elvis (?:): Oferă o valoare implicită dacă obiectul din stânga operatorului ?: este null.

    val userName: String = user?.name ?: "Utilizator Necunoscut"
    
  4. Blocurile if sau when: Verificare explicită pentru null.

    if (user != null) {
        val userName = user.name
    } else {
        // Tratarea cazului în care user este null
    }
    
  5. Funcțiile let, run, apply, with cu apel sigur:

    user?.let {
        // `it` în acest bloc este un `User` non-null
        val userName = it.name
    }
    

Alegerea abordării depinde de logica programului și de comportamentul dorit în cazul în care obiectul este null. În general, se recomandă utilizarea operatorului de apel sigur (?.) sau a operatorului Elvis (?:) pentru a evita NPE. Operatorul !! trebuie utilizat cu precauție.