Mi történik, ha egy nullable mezőhöz férsz hozzá egy objektumban Kotlinban?
sobes.tech MI
Válasz az MI-től
Ha hozzáfér egy nullable objektum mezőjéhez null ellenőrzés nélkül, NullPointerException (NPE) léphet fel.
Biztonságos hozzáféréshez az alábbi megközelítéseket használhatja:
-
Biztonságos hívási operátor (
?.): Visszaadja anull-t, ha az objektumnull, különben végrehajtja a hívást.// Tegyük fel, hogy user? egy User? val userName: String? = user?.name -
Nem-null állítási operátor (
!!): Egyértelműen megerősíti, hogy az objektum nemnull. Ha mégis,NullPointerException-t dob.// Tudatosan használja, NPE-hez vezethet val userName: String = user!!.name -
Elvis operátor (
?:): Alapértelmezett értéket ad, ha a bal oldali objektumnull.val userName: String = user?.name ?: "Ismeretlen felhasználó" -
ifvagywhenblokkok: Explicitnull-ellenőrzés.if (user != null) { val userName = user.name } else { // Kezelje az esetet, ha a user null } -
let,run,apply,withfunkciók biztonságos hívással:user?.let { // Ez a blokk nem-null `User`-t tartalmaz val userName = it.name }
A megközelítés kiválasztása a program logikájától és a kívánt viselkedéstől függ, ha az objektum null. Általában ajánlott a ?. vagy ?: operátorok használata a NPE elkerülése érdekében. Az !! operátort óvatosan kell alkalmazni.