Sobes.tech
Junior

Selgitage, mis on null-turvalisus Kotlinis.

sobes.tech AI

Vastus AI-lt

Null safety — see on Kotlin keele funktsioon, mis ennetab vigu, mis on seotud null viidetega. Seda saavutatakse kahe viidetüübi loomisega: nullable (lubab null) ja non-nullable (ei luba null).

Non-nullable tüübid deklareeritakse tavaliselt:

var nonNullableString: String = "Hello" // Ei saa olla null

Nullable tüübid deklareeritakse kasutades sümbolit ? pärast tüübi nime:

var nullableString: String? = "Hello" // Võib olla null
nullableString = null

Kotlin nõuab nullable tüüpide selget töötlemist, vältides nende liikmete otse kasutamist ilma eelneva null kontrollita. Selleks on järgmised mehhanismid:

  1. Ohutu väljakutse operaator (?.): Kutsub meetodi või pääseb omadusele ainult juhul, kui objekt ei ole null. Vastasel juhul tagastab null:

    val length = nullableString?.length // length on Int? või null
    
  2. Elvis operaator (?:): Pakub vaikimisi väärtust, kui väljendus vasakul on null:

    val nonNullLength = nullableString?.length ?: 0 // nonNullLength on Int, 0 kui nullableString on null
    
  3. !!-ei-null kinnituse operaator: Muudab nullable tüübi non-nullable-ks. Kui väärtus on null, viskab NullPointerException. Kasutatakse, kui arendaja on kindel, et väärtus ei ole null:

    val sureLength = nullableString!!.length // Viskab NullPointerException, kui nullableString on null
    
  4. if kontrollid: Traditsiooniline null kontroll if-iga. Smart cast (targa tüübi teisendus) toimub pärast null kontrolli, kui see on edukas:

    if (nullableString != null) {
        val length = nullableString.length // Siin käsitletakse nullableString kui String
    }
    

Need mehhanismid võimaldavad selgelt hallata olukordi, kus muutuja võib olla null, mis oluliselt vähendab NullPointerException tekkimise tõenäosust programmi käitamise ajal.