Објасните шта је null safety у језику Kotlin.
sobes.tech АИ
Одговор од АИ
Null safety — to funkcija jezika Kotlin koja sprečava greške povezane sa null referencama. Postižemo je kreiranjem dva tipa referenci: nullable (dozvoljava null) i non-nullable (ne dozvoljava null).
Non-nullable tipovi se deklarisu kao obično:
var nonNullableString: String = "Hello" // Ne može biti null
Nullable tipovi se deklarisu korišćenjem simbola ? nakon imena tipa:
var nullableString: String? = "Hello" // Može biti null
nullableString = null
Kotlin zahteva eksplicitno rukovanje nullable tipovima, sprečavajući direktan pristup njihovim članovima bez prethodne provere na null. Za to se koriste sledeći mehanizmi:
-
Operator sigurnog poziva (
?.): Poziva metodu ili pristupa svojstvu samo ako objekat nijenull. U suprotnom, vraćanull.val length = nullableString?.length // length će biti `Int?` ili `null` -
Elvis operator (
?:): Pruža podrazumevanu vrednost ako je izraz levo od operatoranull.val nonNullLength = nullableString?.length ?: 0 // nonNullLength će biti `Int`, 0 ako je nullableString null -
Operator potvrde nenull (
!!): Konvertuje nullable tip u non-nullable. Ako je vrednostnull, bacaNullPointerException. Koristi se kada je programer siguran da vrednost nijenull.val sureLength = nullableString!!.length // Baci NullPointerException ako je nullableString null -
Provere sa
if: Tradicionalna provera nanullpomoćuif. Kompilator vrši tzv. smart cast (pametno prebacivanje) nullable tipa u non-nullable unutarifbloka, ako provera uspe.if (nullableString != null) { val length = nullableString.length // Ovde se nullableString tretira kao String }
Ovi mehanizmi omogućavaju eksplicitno upravljanje situacijama kada promenljiva može biti null, čime se značajno smanjuje verovatnoća pojave NullPointerException tokom izvršavanja programa.