Sobes.tech
Junior

Paaiškinkite, kas yra null safety Kotlin kalboje.

sobes.tech AI

Atsakymas iš AI

Null safety — tai Kotlin kalbos funkcija, kuri užkerta kelią klaidoms, susijusioms su null nuorodomis. Tai pasiekiama sukuriant dvi nuorodų rūšis: nullable (leidžiančias null) ir non-nullable (neleidžiančias null).

Non-nullable tipai deklaruojami įprastai:

var nonNullableString: String = "Hello" // Negali būti null

Nullable tipai deklaruojami naudojant simbolį ? po tipo pavadinimo:

var nullableString: String? = "Hello" // Gali būti null
nullableString = null

Kotlin reikalauja aiškiai tvarkyti nullable tipus, užkertant kelią tiesioginiam jų narių naudojimui be išankstinio null patikrinimo. Tam naudojami šie mechanizmai:

  1. Saugus iškvietimo operatorius (?.): Iškviečia metodą arba pasiekia savybę tik tuo atveju, jei objektas nėra null. Kitaip, grąžina null:

    val length = nullableString?.length // length bus Int? arba null
    
  2. Elvis operatorius (?:): Teikia numatytąją reikšmę, jei išraiška kairėje yra null:

    val nonNullLength = nullableString?.length ?: 0 // nonNullLength bus Int, 0 jei nullableString yra null
    
  3. !!-o ne-null patvirtinimo operatorius: Paverčia nullable tipą į non-nullable. Jei reikšmė null, išmeta NullPointerException. Naudojamas, kai programuotojas įsitikinęs, kad reikšmė nėra null:

    val sureLength = nullableString!!.length // Išmes `NullPointerException`, jei nullableString yra null
    
  4. if patikrinimai: Tradicinis null patikrinimas naudojant if. Smart cast (protingas tipų konvertavimas) vyksta po null patikrinimo, jei jis pavyksta:

    if (nullableString != null) {
        val length = nullableString.length // Čia nullableString laikomas kaip String
    }
    

Šie mechanizmai leidžia aiškiai valdyti situacijas, kai kintamasis gali būti null, kas žymiai sumažina NullPointerException atsiradimo tikimybę programos vykdymo metu.