Šta će se desiti ako pristupite nullable polju objekta u Kotlinu?
sobes.tech АИ
Одговор од АИ
Ako pristupite nullable polju objekta bez provere na null, doći će do izuzetka NullPointerException (NPE).
Za siguran pristup možete koristiti sledeće pristupe:
-
Operator sigurnog poziva (
?.): Vraćanullako je objekatnull, u suprotnom izvršava poziv.// Pretpostavimo da je user? User? val userName: String? = user?.name -
Operator potvrde ne-null (
!!): Izričito potvrđuje da objekat nijenull. Ako jeste, bacaNullPointerException.// Svesno koristiti, može dovesti do NPE val userName: String = user!!.name -
Elvis operator (
?:): Pruža podrazumevanu vrednost ako je leva strananull.val userName: String = user?.name ?: "Nepoznati korisnik" -
Blokovi
ifiliwhen: Ekslicitna provera nanull.if (user != null) { val userName = user.name } else { // Obrada slučaja kada je user null } -
Funkcije
let,run,apply,withsa sigurnim pozivom:user?.let { // `it` unutar ovog bloka je ne-null `User` val userName = it.name }
Izbor pristupa zavisi od logike programa i željenog ponašanja u slučaju da je objekat null. Preporučuje se korišćenje operatora sigurnog poziva (?.) ili Elvis operatora (?:) za izbegavanje NPE. Operator !! treba koristiti sa oprezom.