Sobes.tech
Junior

Explica ce este siguranța null în limbajul Kotlin.

sobes.tech AI

Răspuns de la AI

Siguranța null — este o funcție a limbajului Kotlin care previne erorile legate de referințele null. Se realizează prin crearea a două tipuri de referințe: nullable (permite null) și non-nullable (nu permite null).

Tipurile non-nullable sunt declarate ca de obicei:

var nonNullableString: String = "Hello" // Nu poate fi null

Tipurile nullable sunt declarate folosind simbolul ? după numele tipului:

var nullableString: String? = "Hello" // Poate fi null
nullableString = null

Kotlin necesită o gestionare explicită a tipurilor nullable, evitând accesul direct la membrii lor fără verificare prealabilă pentru null. Pentru aceasta, sunt disponibile următoarele mecanisme:

  1. Operatorul de apel sigur (?.): Apelează o metodă sau accesează o proprietate doar dacă obiectul nu este null. În caz contrar, returnează null.

    val length = nullableString?.length // length va fi `Int?` sau `null`
    
  2. Operatorul Elvis (?:): Oferă o valoare implicită dacă expresia din stânga operatorului este null.

    val nonNullLength = nullableString?.length ?: 0 // nonNullLength va fi `Int`, 0 dacă nullableString este null
    
  3. Operatorul de afirmare non-null (!!): Convertește un tip nullable în non-nullable. Dacă valoarea este null, se aruncă o excepție NullPointerException. Este utilizat atunci când dezvoltatorul este sigur că valoarea nu este null.

    val sureLength = nullableString!!.length // Va arunca NullPointerException dacă nullableString este null
    
  4. Verificări cu if: Verificare tradițională pentru null cu if. Compilatorul face un smart cast (cast inteligent) al tipului nullable în non-nullable în interiorul blocului if, dacă verificarea trece.

    if (nullableString != null) {
        val length = nullableString.length // Aici nullableString este tratat ca String
    }
    

Aceste mecanisme permit gestionarea explicită a situațiilor în care o variabilă poate fi null, reducând semnificativ probabilitatea apariției unei excepții NullPointerException în timpul execuției.