Sobes.tech
Junior

Co jsou to 'nullable' typy v Kotlinu a jak fungují?

sobes.tech AI

Odpověď od AI

Nullable typy v Kotlinu jsou typy, které mohou obsahovat jak hodnotu, tak null. Jsou explicitně označeny symbolem ? za názvem typu.

Fungování je založeno na systému typů Kotlinu, který zabraňuje NullPointerException během kompilace. Kompilátor vyžaduje explicitní kontrolu na null před přístupem k členům nullable objektu.

Hlavní způsoby bezpečné práce s nullable typy:

  • Kontrola na null pomocí if:

    fun printLength(str: String?) {
        if (str != null) {
            println(str.length) // Bezpečný volání po kontrole null
        } else {
            println("Řetězec null")
        }
    }
    
  • Operátor bezpečného volání (?.): Vrací null, pokud je objekt null, jinak výsledek volání.

    val safeLength: Int? = str?.length // Pokud je str null, safeLength bude null
    
  • Operátor Elvis (?:): Umožňuje poskytnout výchozí hodnotu v případě, že výraz vlevo od operátoru je null.

    val lengthOrDefault: Int = str?.length ?: 0 // Pokud je str null, bude lengthOrDefault 0
    
  • Operátor explicitního nenull potvrzení (!!): Převádí nullable typ na nenullovatelné. Používejte opatrně, protože vyvolá NullPointerException, pokud je hodnota null.

    val assertedLength: Int = str!!.length // Vyhodí NPE, pokud je str null
    
  • Funkce let/run/apply/also s bezpečným voláním:

    str?.let {
        // Kód se provede pouze, pokud str není null
        println("Délka řetězce: ${it.length}")
    }
    

Systém nullable typů Kotlin výrazně zvyšuje bezpečnost a snižuje pravděpodobnost výskytu NullPointerException ve srovnání s jazyky, kde může být null přiřazeno jakémukoliv typu bez explicitního označení.