Sobes.tech
Junior

Čo sú 'nullable' typy v Kotlin a ako fungujú?

sobes.tech AI

Odpoveď od AI

Nullable typy v Kotlinu sú typy, ktoré môžu obsahovať hodnotu alebo null. Sú explicitne označené symbolom ? za názvom typu.

Fungovanie je založené na systéme typov Kotlinu, ktorý zabraňuje NullPointerException počas kompilácie. Kompilátor vyžaduje explicitnú kontrolu na null pred prístupom k členom nullable objektu.

Hlavné spôsoby bezpečnej práce s nullable typmi sú:

  • Kontrola na null pomocou if:

    fun printLength(str: String?) {
        if (str != null) {
            println(str.length) // Bezpečný volanie po kontrole null
        } else {
            println("Reťazec null")
        }
    }
    
  • Operátor bezpečného volania (?.): Vráti null, ak je objekt null, inak výsledok volania.

    val safeLength: Int? = str?.length // Ak je str null, safeLength bude null
    
  • Elvis operátor (?:): Umožňuje poskytnúť predvolenú hodnotu, ak je výraz vľavo od operátora null.

    val lengthOrDefault: Int = str?.length ?: 0 // Ak je str null, bude lengthOrDefault 0
    
  • Operátor explicitného ne-null potvrdenia (!!): Konvertuje nullable typ na non-nullable. Opatrne s ním, pretože vyhodí NullPointerException, ak je hodnota null.

    val assertedLength: Int = str!!.length // Vyhodí NPE, ak je str null
    
  • Funkcie let/run/apply/also s bezpečným volaním:

    str?.let {
        // Kód sa vykoná iba, ak str nie je null
        println("Dĺžka reťazca: ${it.length}")
    }
    

Systém nullable typov Kotlinu výrazne zvyšuje bezpečnosť a znižuje pravdepodobnosť výskytu NullPointerException v porovnaní s jazykmi, kde môže byť null priradené akémukoľvek typu bez explicitného označenia.