Sobes.tech
Junior

Čo sa stane, ak sa obrátiť na pole objektu, ktorý môže byť null?

sobes.tech AI

Odpoveď od AI

NullPointerException (NPE). Nastane, keď sa pokúsite zavolať metódu alebo pristúpiť k poľu objektu, ktorého odkaz je null.

Príklad:

data class User(val name: String)

fun printUserName(user: User?) {
    // Ak je user == null, nastane NullPointerException
    println(user.name)
}

Aby ste sa vyhli NPE, môžete použiť:

  • Kontroly na null:
    fun printUserName(user: User?) {
        if (user != null) {
            println(user.name)
        } else {
            println("Používateľ je null")
        }
    }
    
  • Bezpečný operátor volania (?.):
    fun printUserName(user: User?) {
        println(user?.name) // Vypíše null, ak je user null, inak meno
    }
    
  • Elvisov operátor (?:):
    fun printUserName(user: User?) {
        val userName = user?.name ?: "Predvolený názov" // Priradí "Predvolený názov", ak je user?.name null
        println(userName)
    }
    
  • Nef-nullové typy (v Kotlin):
    // Táto metóda akceptuje iba ne-nullový objekt User
    fun printUserName(user: User) {
        println(user.name) // Garantovane nie null
    }