Sobes.tech
Junior

Kas notiks, ja piekļūsiet nullable objekta laukam Kotlin?

sobes.tech AI

Atbilde no AI

Ja piekļūstat nullable objekta laukam bez pārbaudes uz null, notiks NullPointerException (NPE).

Drošai piekļūšanai jūs varat izmantot šādus pieejas veidus:

  1. Drošas izsaukšanas operators (?.): Atgriež null, ja objekts ir null, citādi veic izsaukumu.

    // Pieņemsim, ka user? ir User?
    val userName: String? = user?.name
    
  2. !! ne-null apstiprināšanas operators: Skaidri apstiprina, ka objekts nav null. Ja ir, izmet NullPointerException.

    // Apzināti lietot, var novest pie NPE
    val userName: String = user!!.name
    
  3. Elvis operators (?:): Nodrošina noklusējuma vērtību, ja kreisais objekts ir null.

    val userName: String = user?.name ?: "Nezināms lietotājs"
    
  4. if vai when bloki: Skaidra null pārbaude.

    if (user != null) {
        val userName = user.name
    } else {
        // Apstrādāt gadījumu, ja user ir null
    }
    
  5. let, run, apply, with funkcijas ar drošu izsaukumu:

    user?.let {
        // `it` šajā blokā ir ne-null `User`
        val userName = it.name
    }
    

Izvēle ir atkarīga no programmas loģikas un vēlamās uzvedības gadījumā, ja objekts ir null. Parasti ieteicams izmantot drošu izsaukuma operatoru (?.) vai Elvis operatoru (?:) NPE novēršanai. Operatoru !! vajadzētu izmantot ar piesardzību.