Sobes.tech
Junior

Kotlin'da nullable ob'ekt maydoni bilan murojaat qilinsa nima bo'ladi?

sobes.tech AI

AIdan javob

Agar obyekting nullable maydoniga null bo'lmaganligini tekshirmasdan kirishsangiz, NullPointerException (NPE) yuzaga keladi.

Xavfsiz kirish uchun quyidagi yondashuvlardan foydalanish mumkin:

  1. Xavfsiz chaqirish operatori (?.): Agar ob'ekt null bo'lsa, null qaytaradi, aks holda chaqiruvni bajaradi.

    // Faraz qilaylik, user? User?
    val userName: String? = user?.name
    
  2. !! null bo'lmaganlikni tasdiqlash operatori: Ob'ekt null emasligini aniq tasdiqlaydi. Agar null bo'lsa, NullPointerException chiqariladi.

    // Ma'lum holda ishlatish, NPE ga olib kelishi mumkin
    val userName: String = user!!.name
    
  3. Elvis operatori (?:): Agar chap tomonidagi ob'ekt null bo'lsa, standart qiymat taqdim etadi.

    val userName: String = user?.name ?: "Noma'lum foydalanuvchi"
    
  4. if yoki when bloklari: Aniq null tekshiruvi.

    if (user != null) {
        val userName = user.name
    } else {
        // `user` null bo'lsa, shartlarni bajarish
    }
    
  5. let, run, apply, with funksiyalari bilan xavfsiz chaqirish:

    user?.let {
        // Bu blok ichida `it` null bo'lmagan `User`
        val userName = it.name
    }
    

Yondashuv tanlovi dastur mantiqi va ob'ekt null bo'lsa, istalgan xulq-atvoriga bog'liq. Umuman olganda, ?. yoki ?: operatorlaridan foydalanish NPE oldini olish uchun tavsiya etiladi. !! operatoridan ehtiyotkorlik bilan foydalanish kerak.