Sobes.tech
Junior

Kas nutiks, jei prieisite prie nullable objekto lauko Kotlin'e?

sobes.tech AI

Atsakymas iš AI

Jei prieisite prie nullable objekto lauko be patikrinimo dėl null, įvyks NullPointerException (NPE).

Saugiai prieigai galite naudoti šiuos požiūrius:

  1. Saugus kvietimo operatorius (?.): Grąžina null, jei objektas yra null, kitaip vykdo kvietimą.

    // Tarkime, user? yra User?
    val userName: String? = user?.name
    
  2. !! ne-null patvirtinimo operatorius: Aiškiai patvirtina, kad objektas nėra null. Jei yra, išmeta NullPointerException.

    // Sąmoningai naudoti, gali sukelti NPE
    val userName: String = user!!.name
    
  3. Elvis operatorius (?:): Teikia numatytąją reikšmę, jei kairysis objektas yra null.

    val userName: String = user?.name ?: "Nežinomas naudotojas"
    
  4. if arba when blokai: Aiškus null patikrinimas.

    if (user != null) {
        val userName = user.name
    } else {
        // Apdorojimas, jei user yra null
    }
    
  5. let, run, apply, with funkcijos su saugiu kvietimu:

    user?.let {
        // `it` šiame bloke yra ne-null `User`
        val userName = it.name
    }
    

Pasirinkimas priklauso nuo programos logikos ir norimo elgesio, jei objektas yra null. Paprastai rekomenduojama naudoti saugaus kvietimo operatorių (?.) arba Elvis operatorių (?:) NPE išvengti. Operatorių !! reikėtų naudoti atsargiai.