Sobes.tech
Junior

Izskaidrojiet, kas ir null drošība Kotlin valodā.

sobes.tech AI

Atbilde no AI

Null safety — tas ir Kotlin valodas funkcija, kas novērš kļūdas, kas saistītas ar null atsaucēm. To sasniedz, izveidojot divus atsauces tipus: nullable (atļauj null) un non-nullable (neatļauj null).

Non-nullable tipi tiek deklarēti parasti:

var nonNullableString: String = "Hello" // Nav iespējams būt null

Nullable tipi tiek deklarēti, izmantojot simbolu ? pēc tipa nosaukuma:

var nullableString: String? = "Hello" // Var būt null
nullableString = null

Kotlin pieprasa skaidri apstrādāt nullable tipus, novēršot tiešu piekļuvi to locekļiem bez iepriekšējas null pārbaudes. Tam ir šādi mehānismi:

  1. Drošas izsaukšanas operators (?.): Izsauc metodi vai piekļūst īpašībai tikai tad, ja objekts nav null. Pretējā gadījumā tas atgriež null:

    val length = nullableString?.length // length būs Int? vai null
    
  2. Elvis operators (?:): Nodrošina noklusējuma vērtību, ja izteiksme pa kreisi ir null:

    val nonNullLength = nullableString?.length ?: 0 // nonNullLength būs Int, 0, ja nullableString ir null
    
  3. !!-ne-null apstiprināšanas operators: Pārvērš nullable tipu uz non-nullable. Ja vērtība ir null, tas izmet NullPointerException. To izmanto, ja izstrādātājs ir pārliecināts, ka vērtība nav null:

    val sureLength = nullableString!!.length // Izmet NullPointerException, ja nullableString ir null
    
  4. if pārbaudes: Tradicionāla null pārbaude ar if. Smart cast (gudrs pārvēršana) notiek pēc null pārbaudes, ja tā ir veiksmīga:

    if (nullableString != null) {
        val length = nullableString.length // Šeit nullableString tiek uzskatīts par String
    }
    

Šie mehānismi ļauj skaidri pārvaldīt situācijas, kad mainīgais var būt null, kas ievērojami samazina NullPointerException rašanās iespēju programmas izpildes laikā.