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
nullpomocí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 objektnull, 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 jenull.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 hodnotanull.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í.