Sobes.tech
Junior

Mi történik, ha egy null értékű lehetőséget tartalmazó objektum mezőjéhez nyúlunk?

sobes.tech MI

Válasz az MI-től

NullPointerException (NPE). Akkor fordul elő, amikor megpróbálsz meghívni egy metódust vagy hozzáférni egy objektum mezőjéhez, amelynek hivatkozása null.

Példa:

data class User(val name: String)

fun printUserName(user: User?) {
    // Ha user == null, NullPointerException lép fel
    println(user.name)
}

Az NPE elkerülése érdekében használhatod:

  • null-ellenőrzéseket:
    fun printUserName(user: User?) {
        if (user != null) {
            println(user.name)
        } else {
            println("Felhasználó null")
        }
    }
    
  • Biztonságos hívási operátor (?.):
    fun printUserName(user: User?) {
        println(user?.name) // Null-t fog visszaadni, ha user == null, különben a nevet
    }
    
  • Elvis operátor (?:):
    fun printUserName(user: User?) {
        val userName = user?.name ?: "Alapértelmezett név" // "Alapértelmezett név" értéket ad, ha user?.name null
        println(userName)
    }
    
  • Nem-null típusok (Kotlin-ben):
    // Ez a metódus csak nem-null User objektumokat fogad el
    fun printUserName(user: User) {
        println(user.name) // Garantáltan nem null
    }