Vysvetlite, čo je null safety v jazyku Kotlin.
sobes.tech AI
Odpoveď od AI
Null safety — je funkcia jazyka Kotlin, ktorá zabraňuje chybám súvisiacim s null odkazmi. Dosahuje sa vytvorením dvoch typov odkazov: nullable (povoľuje null) a non-nullable (nepovoľuje null).
Non-nullable typy sa deklarujú ako obvykle:
var nonNullableString: String = "Hello" // Nemôže byť null
Nullable typy sa deklarujú použitím symbolu ? za názvom typu:
var nullableString: String? = "Hello" // Môže byť null
nullableString = null
Kotlin vyžaduje explicitné zaobchádzanie s nullable typmi, čím zabraňuje priamej manipulácii s ich členmi bez predchádzajúcej kontroly na null. Na to slúžia nasledujúce mechanizmy:
-
Operator bezpečného volania (
?.): Volá metódu alebo pristupuje k vlastnosti iba ak objekt nie jenull. Inak vrátinull.val length = nullableString?.length // length bude typu `Int?` alebo `null` -
Operator Elvis (
?:): Poskytuje predvolenú hodnotu, ak je výraz vľavo od operátoranull.val nonNullLength = nullableString?.length ?: 0 // nonNullLength bude typu `Int`, 0 ak je nullableString null -
Operator potvrdenia nenull (
!!): Konvertuje nullable typ na non-nullable. Ak je hodnotanull, vyvolá výnimkuNullPointerException. Používa sa, keď vývojár je si istý, že hodnota nie jenull.val sureLength = nullableString!!.length // Vyvolá NullPointerException, ak je nullableString null -
Kontroly s
if: Tradičná kontrola nanullpomocouif. Kompilátor vykoná tzv. smart cast (chytré pretypovanie) nullable typu na non-nullable vo vnútri blokuif, ak kontrola prejde.if (nullableString != null) { val length = nullableString.length // Tu sa nullableString považuje za String }
Tieto mechanizmy umožňujú explicitne riadiť situácie, keď premenná môže byť null, čím sa výrazne znižuje pravdepodobnosť výskytu NullPointerException počas behu programu.