Sobes.tech
Junior

Kas notiks, ja pieejat objekta laukam, kurš var būt null?

sobes.tech AI

Atbilde no AI

NullPointerException (NPE). Notiek, kad mēģināt izsaukt metodi vai piekļūt objekta laukam, kura atsauce ir null.

Piemērs:

data class User(val name: String)

fun printUserName(user: User?) {
    // Ja user == null, notiks NullPointerException
    println(user.name)
}

Lai izvairītos no NPE, vari izmantot:

  • null pārbaudes:
    fun printUserName(user: User?) {
        if (user != null) {
            println(user.name)
        } else {
            println("Lietotājs ir null")
        }
    }
    
  • Drošas izsaukšanas operators (?.):
    fun printUserName(user: User?) {
        println(user?.name) // Izvadīs null, ja user == null, citādi vārdu
    }
    
  • Elvis operators (?:):
    fun printUserName(user: User?) {
        val userName = user?.name ?: "Noklusējuma vārds" // Piešķirs "Noklusējuma vārds", ja user?.name ir null
        println(userName)
    }
    
  • Kotlin ne-null tipi:
    // Šī metode pieņem tikai ne-null User objektu
    fun printUserName(user: User) {
        println(user.name) // Garantēti nav null
    }