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:
-
Xavfsiz chaqirish operatori (
?.): Agar ob'ektnullbo'lsa,nullqaytaradi, aks holda chaqiruvni bajaradi.// Faraz qilaylik, user? User? val userName: String? = user?.name -
!!null bo'lmaganlikni tasdiqlash operatori: Ob'ektnullemasligini aniq tasdiqlaydi. Agarnullbo'lsa,NullPointerExceptionchiqariladi.// Ma'lum holda ishlatish, NPE ga olib kelishi mumkin val userName: String = user!!.name -
Elvis operatori (
?:): Agar chap tomonidagi ob'ektnullbo'lsa, standart qiymat taqdim etadi.val userName: String = user?.name ?: "Noma'lum foydalanuvchi" -
ifyokiwhenbloklari: Aniqnulltekshiruvi.if (user != null) { val userName = user.name } else { // `user` null bo'lsa, shartlarni bajarish } -
let,run,apply,withfunksiyalari 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.