Ce se întâmplă dacă accesezi un câmp nullable al unui obiect în Kotlin?
sobes.tech AI
Răspuns de la AI
Dacă accesați un câmp nullable al unui obiect fără verificare pentru null, va apărea o excepție NullPointerException (NPE).
Pentru acces sigur, puteți utiliza următoarele abordări:
-
Operatorul de apel sigur (
?.): Returneazănulldacă obiectul estenull, altfel efectuează apelul.// Presupunem că user? este un User? val userName: String? = user?.name -
Operatorul de afirmare non-null (
!!): Confirmă explicit că obiectul nu estenull. Dacă este, se aruncăNullPointerException.// Folosiți conștient, poate duce la NPE val userName: String = user!!.name -
Operatorul Elvis (
?:): Oferă o valoare implicită dacă obiectul din stânga operatorului?:estenull.val userName: String = user?.name ?: "Utilizator Necunoscut" -
Blocurile
ifsauwhen: Verificare explicită pentrunull.if (user != null) { val userName = user.name } else { // Tratarea cazului în care user este null } -
Funcțiile
let,run,apply,withcu apel sigur:user?.let { // `it` în acest bloc este un `User` non-null val userName = it.name }
Alegerea abordării depinde de logica programului și de comportamentul dorit în cazul în care obiectul este null. În general, se recomandă utilizarea operatorului de apel sigur (?.) sau a operatorului Elvis (?:) pentru a evita NPE. Operatorul !! trebuie utilizat cu precauție.