Sobes.tech
Junior

Mis juhtub, kui pääsete ligi nullable objekti väljadele Kotlinis?

sobes.tech AI

Vastus AI-lt

Kui te pääsete objekti nullable välja ilma nullkontrollita, tekib NullPointerException (NPE).

Turvalise juurdepääsu jaoks võite kasutada järgmisi lähenemisviise:

  1. Turvaline kutsesüsteem (?.): Tagastab null, kui objekt on null, vastasel juhul teostab kutsumise.

    // Oletame, et user? on User?
    val userName: String? = user?.name
    
  2. !! mitte-null kinnitamise operaator: Kinnitab selgelt, et objekt ei ole null. Kui on, viskab NullPointerException.

    // Kasutada teadlikult, võib viia NPE-ni
    val userName: String = user!!.name
    
  3. Elvis operaator (?:): Pakub vaikimisi väärtust, kui vasakpoolne objekt on null.

    val userName: String = user?.name ?: "Tundmatu kasutaja"
    
  4. if või when plokid: Selge null-kontroll.

    if (user != null) {
        val userName = user.name
    } else {
        // Töötle juhtumit, kui user on null
    }
    
  5. let, run, apply, with funktsioonid turvalise kutsumisega:

    user?.let {
        // `it` selles plokis on mitte-null `User`
        val userName = it.name
    }
    

Valik sõltub programmi loogikast ja soovitud käitumisest juhul, kui objekt on null. Üldiselt soovitatakse kasutada turvalise kutsumise (?.) või Elvisi (?:) operaatorit NPE vältimiseks. !! operaatorit tuleks kasutada ettevaatusega.