Sobes.tech
Junior

Kotlinде nullable объекттин талаасына кайрылсаңыз, эмне болот?

sobes.tech AI

AIден жооп

Eger siz nullable obyektiň meýdanyna null barlasa, null barlap bolmaýan ýagdaýynda NullPointerException (NPE) ýüze çykýar.

Howpsuz giriş üçin aşakdaky çemeleşmeleri ulanyp bilersiňiz:

  1. Howpsuz çagyrma operatory (?.): Obýekt null bolsa, null gaýtarar, başga halda çagyrma amala aşar.

    // Faraz edeli, user? User?
    val userName: String? = user?.name
    
  2. !! null däl diýýşiň operatory: Obýektiň null däldigini açyk tassyklaýar. Eger null bolsa, NullPointerException çykaryp biler.

    // Bilinçli ulanyň, NPE-ä getirip biler
    val userName: String = user!!.name
    
  3. Elvis operatory (?:): Eger çep tarapdaky obýekt null bolsa, öňünden bellenen bahany berýär.

    val userName: String = user?.name ?: "Bilinmedik ulanyjy"
    
  4. if ýa-da when bloklary: Açyk null barlagy.

    if (user != null) {
        val userName = user.name
    } else {
        // `user` null bolsa, işlemek
    }
    
  5. let, run, apply, with funksiyalary bilen howpsuz çagyrma:

    user?.let {
        // Bu blokda `it` null däl `User`
        val userName = it.name
    }
    

Ulgam saýlamagy programma logikasyna we obýektiň null bolmagy halyndaky islenýän hereketine baglydyr. Ümumiyetde, NPE-den gaçmak üçin ?. ýa-da ?: operatoryny ulanmaga maslahat berilýär. !! operatoryny bolsa, ätiýaçlyk bilen ulanyň.