Sobes.tech
Junior

Co se stane, když se pokusíte přistoupit k poli objektu, který může být null?

sobes.tech AI

Odpověď od AI

NullPointerException (NPE). Dochází, když se pokusíte zavolat metodu nebo přistoupit k poli objektu, jehož odkaz je null.

Příklad:

data class User(val name: String)

fun printUserName(user: User?) {
    // Pokud je user == null, dojde k NullPointerException
    println(user.name)
}

Abyste se vyhnuli NPE, můžete použít:

  • Kontroly na null:
    fun printUserName(user: User?) {
        if (user != null) {
            println(user.name)
        } else {
            println("Uživatel je null")
        }
    }
    
  • Bezpečný operátor volání (?.):
    fun printUserName(user: User?) {
        println(user?.name) // Vypíše null, pokud je user null, jinak jméno
    }
    
  • Elvisův operátor (?:):
    fun printUserName(user: User?) {
        val userName = user?.name ?: "Výchozí jméno" // Při null přiřadí "Výchozí jméno"
        println(userName)
    }
    
  • Není-nullové typy (v Kotlinu):
    // Tato metoda přijímá pouze nenullový objekt User
    fun printUserName(user: User) {
        println(user.name) // Garantováno, že není null
    }