Sobes.tech
Junior

Ի՞նչ կլինի, եթե դիմեք Kotlin-ում օբյեկտի nullable դաշտին։

sobes.tech AI

Պատասխան AI-ից

Եթե մուտք եք գործում nullable դաշտի օբյեկտի առանց null ստուգելու, տեղի կունենա NullPointerException (NPE) արտահայտություն:

Անվտանգ մուտքի համար կարող եք օգտագործել հետևյալ մոտեցումները:

  1. Անվտանգ կանչի օպերատոր (?.): Վերադարձնում է null, եթե օբյեկտը null է, հակառակ դեպքում կատարում է կանչը:

    // Ենթադրենք, user? է User?
    val userName: String? = user?.name
    
  2. !! ոչ-null հաստատման օպերատոր: Հաստատում է, որ օբյեկտը null չէ։ Եթե null է, արտածում է NullPointerException:

    // Զգուշությամբ օգտագործել, կարող է հանգեցնել NPE-ի
    val userName: String = user!!.name
    
  3. Elvis օպերատոր (?:): Առաջարկում է նախնական արժեք, եթե ձախ կողմի օբյեկտը null է:

    val userName: String = user?.name ?: "Անհայտ օգտվող"
    
  4. if կամ when բլոկներ: Ապակաս null ստուգում:

    if (user != null) {
        val userName = user.name
    } else {
        // Հաշվարկ, երբ user null է
    }
    
  5. let, run, apply, with ֆունկցիաներով անվտանգ կանչեր:

    user?.let {
        // `it` այս բլոկում ոչ-null `User`
        val userName = it.name
    }
    

Ընտրությունը կախված է ծրագրի տրամաբանությունից և ցանկալի վարքագծից, երբ օբյեկտը null է: Ընդհանուր առմամբ, խորհուրդ է տրվում օգտագործել անվտանգ կանչի օպերատոր (?.) կամ Elvիս օպերատոր (?:) NPE-ից խուսափելու համար: !! օպերատորը պետք է օգտագործել զգուշությամբ: