Sobes.tech
Junior

O que acontece se aceder a um campo de um objeto que pode ser nulo?

sobes.tech IA

Resposta da IA

NullPointerException (NPE). Acontece quando tenta chamar um método ou aceder a um campo de um objeto cuja referência é null.

Exemplo:

data class User(val name: String)

fun printUserName(user: User?) {
    // Se user == null, ocorrerá NullPointerException
    println(user.name)
}

Para evitar NPE, pode usar:

  • Verificações de null:
    fun printUserName(user: User?) {
        if (user != null) {
            println(user.name)
        } else {
            println("O utilizador é null")
        }
    }
    
  • Operador de chamada segura (?.):
    fun printUserName(user: User?) {
        println(user?.name) // Vai mostrar null se user == null, caso contrário, o nome
    }
    
  • Operador Elvis (?:):
    fun printUserName(user: User?) {
        val userName = user?.name ?: "Nome Padrão" // Atribui "Nome Padrão" se user?.name == null
        println(userName)
    }
    
  • Tipos não nulos (em Kotlin):
    // Este método aceita apenas objetos User não nulos
    fun printUserName(user: User) {
        println(user.name) // Garantido não null
    }