Magyarázza el, mi az a null biztonság a Kotlin nyelvben.
sobes.tech MI
Válasz az MI-től
Null biztonság — ez a Kotlin nyelv egyik funkciója, amely megakadályozza a null hivatkozásokkal kapcsolatos hibákat. Két típusú hivatkozás létrehozásával érhető el: nullable (amely megengedi a null-t) és non-nullable (amely nem engedi a null-t).
A non-nullable típusokat szokás szerint deklarálják:
var nonNullableString: String = "Hello" // Nem lehet null
A nullable típusokat a típus neve után a ? szimbólummal deklarálják:
var nullableString: String? = "Hello" // Lehet null
nullableString = null
A Kotlin explicit módon megköveteli a nullable típusok kezelését, elkerülve a közvetlen hozzáférést azok tagjaihoz null ellenőrzés nélkül. Ehhez a következő mechanizmusokat biztosítja:
-
Biztonságos hívás operátor (
?.): Csak akkor hív meg egy metódust vagy ér el egy tulajdonságot, ha az objektum nemnull. Ellenkező esetbennull-t ad vissza.val length = nullableString?.length // length `Int?` vagy `null` -
Elvis operátor (
?:): Alapértelmezett értéket ad, ha a bal oldali kifejezésnull.val nonNullLength = nullableString?.length ?: 0 // nonNullLength `Int`, 0 ha nullableString null -
Nem-null állítás operátor (
!!): Nullable típust non-nullable-vá alakít. Ha az értéknull,NullPointerException-t dob. Akkor használják, amikor a fejlesztő biztos benne, hogy az érték nemnull.val sureLength = nullableString!!.length // NullPointerException-t dob, ha nullableString null -
if-ellenőrzések: Hagyományosnull-ellenőrzésif-tel. A fordító okos típusátalakítást (smart cast) hajt végre a nullable típusból non-nullable-vá azifblokkban, ha a feltétel igaz.if (nullableString != null) { val length = nullableString.length // Itt nullableString String-ként kezelendő }
Ezek a mechanizmusok lehetővé teszik a null-tartományba eső változók explicit kezelését, jelentősen csökkentve a NullPointerException előfordulásának valószínűségét a futás során.