Sobes.tech
Junior

Co się stanie, jeśli odwołasz się do pola obiektu, który może być null?

sobes.tech AI

Odpowiedź od AI

NullPointerException (NPE). Występuje, gdy próbujesz wywołać metodę lub odwołać się do pola obiektu, którego odwołanie jest równe null.

Przykład:

data class User(val name: String)

fun printUserName(user: User?) {
    // Jeśli user == null, wystąpi NullPointerException
    println(user.name)
}

Aby uniknąć NPE, można użyć:

  • Sprawdzania na null:
    fun printUserName(user: User?) {
        if (user != null) {
            println(user.name)
        } else {
            println("Użytkownik jest null")
        }
    }
    
  • Operator bezpiecznego wywołania (?.):
    fun printUserName(user: User?) {
        println(user?.name) // Wyświetli null, jeśli user == null, w przeciwnym razie imię
    }
    
  • Operator Elvisa (?:):
    fun printUserName(user: User?) {
        val userName = user?.name ?: "Domyślna nazwa" // Przypisze "Domyślna nazwa", jeśli user?.name == null
        println(userName)
    }
    
  • Typy nie-nullowe (w Kotlin):
    // Ta metoda przyjmuje tylko nie-nullowy obiekt User
    fun printUserName(user: User) {
        println(user.name) // Gwarantowane, że nie null
    }