Ի՞նչ կլինի, եթե դիմեք Kotlin-ում օբյեկտի nullable դաշտին։
sobes.tech AI
Պատասխան AI-ից
Եթե մուտք եք գործում nullable դաշտի օբյեկտի առանց null ստուգելու, տեղի կունենա NullPointerException (NPE) արտահայտություն:
Անվտանգ մուտքի համար կարող եք օգտագործել հետևյալ մոտեցումները:
-
Անվտանգ կանչի օպերատոր (
?.): Վերադարձնում էnull, եթե օբյեկտըnullէ, հակառակ դեպքում կատարում է կանչը:// Ենթադրենք, user? է User? val userName: String? = user?.name -
!!ոչ-null հաստատման օպերատոր: Հաստատում է, որ օբյեկտըnullչէ։ Եթեnullէ, արտածում էNullPointerException:// Զգուշությամբ օգտագործել, կարող է հանգեցնել NPE-ի val userName: String = user!!.name -
Elvis օպերատոր (
?:): Առաջարկում է նախնական արժեք, եթե ձախ կողմի օբյեկտըnullէ:val userName: String = user?.name ?: "Անհայտ օգտվող" -
ifկամwhenբլոկներ: Ապակասnullստուգում:if (user != null) { val userName = user.name } else { // Հաշվարկ, երբ user null է } -
let,run,apply,withֆունկցիաներով անվտանգ կանչեր:user?.let { // `it` այս բլոկում ոչ-null `User` val userName = it.name }
Ընտրությունը կախված է ծրագրի տրամաբանությունից և ցանկալի վարքագծից, երբ օբյեկտը null է: Ընդհանուր առմամբ, խորհուրդ է տրվում օգտագործել անվտանգ կանչի օպերատոր (?.) կամ Elvիս օպերատոր (?:) NPE-ից խուսափելու համար: !! օպերատորը պետք է օգտագործել զգուշությամբ: