Kas nutiks, jei prieisite prie nullable objekto lauko Kotlin'e?
sobes.tech AI
Atsakymas iš AI
Jei prieisite prie nullable objekto lauko be patikrinimo dėl null, įvyks NullPointerException (NPE).
Saugiai prieigai galite naudoti šiuos požiūrius:
-
Saugus kvietimo operatorius (
?.): Grąžinanull, jei objektas yranull, kitaip vykdo kvietimą.// Tarkime, user? yra User? val userName: String? = user?.name -
!!ne-null patvirtinimo operatorius: Aiškiai patvirtina, kad objektas nėranull. Jei yra, išmetaNullPointerException.// Sąmoningai naudoti, gali sukelti NPE val userName: String = user!!.name -
Elvis operatorius (
?:): Teikia numatytąją reikšmę, jei kairysis objektas yranull.val userName: String = user?.name ?: "Nežinomas naudotojas" -
ifarbawhenblokai: Aiškusnullpatikrinimas.if (user != null) { val userName = user.name } else { // Apdorojimas, jei user yra null } -
let,run,apply,withfunkcijos su saugiu kvietimu:user?.let { // `it` šiame bloke yra ne-null `User` val userName = it.name }
Pasirinkimas priklauso nuo programos logikos ir norimo elgesio, jei objektas yra null. Paprastai rekomenduojama naudoti saugaus kvietimo operatorių (?.) arba Elvis operatorių (?:) NPE išvengti. Operatorių !! reikėtų naudoti atsargiai.