Č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
nullpomocouif: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átinull, ak je objektnull, 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átoranull.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 hodnotanull.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.