Sobes.tech
Junior

Kas nutiks, jei prieisite objekto lauką, kuris gali būti null?

sobes.tech AI

Atsakymas iš AI

NullPointerException (NPE). Atsitinka, kai bandote iškviesti metodo arba prieiti prie objekto lauko, kurio nuoroda yra null.

Pavyzdys:

data class User(val name: String)

fun printUserName(user: User?) {
    // Jei user == null, įvyks NullPointerException
    println(user.name)
}

Norint išvengti NPE, galima naudoti:

  • null patikrinimus:
    fun printUserName(user: User?) {
        if (user != null) {
            println(user.name)
        } else {
            println("Naudotojas yra null")
        }
    }
    
  • Saugaus iškvietimo operatorių (?.):
    fun printUserName(user: User?) {
        println(user?.name) // Parodys null, jei user == null, kitaip vardą
    }
    
  • Elvis operatorių (?:):
    fun printUserName(user: User?) {
        val userName = user?.name ?: "Numatytas vardas" // Priskirs "Numatytas vardas", jei user?.name == null
        println(userName)
    }
    
  • Kotlin ne-null tipai:
    // Šis metodas priima tik ne-null User objektą
    fun printUserName(user: User) {
        println(user.name) // Garantuoja, kad ne null
    }