Sobes.tech
Junior

Š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:

  1. Operator sigurnog poziva (?.): Vraća null ako je objekat null, u suprotnom izvršava poziv.

    // Pretpostavimo da je user? User?
    val userName: String? = user?.name
    
  2. Operator potvrde ne-null (!!): Izričito potvrđuje da objekat nije null. Ako jeste, baca NullPointerException.

    // Svesno koristiti, može dovesti do NPE
    val userName: String = user!!.name
    
  3. Elvis operator (?:): Pruža podrazumevanu vrednost ako je leva strana null.

    val userName: String = user?.name ?: "Nepoznati korisnik"
    
  4. Blokovi if ili when: Ekslicitna provera na null.

    if (user != null) {
        val userName = user.name
    } else {
        // Obrada slučaja kada je user null
    }
    
  5. Funkcije let, run, apply, with sa 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.