Sobes.tech
Junior

O que acontece se aceder a um campo nullable de um objeto em Kotlin?

sobes.tech IA

Resposta da IA

Se aceder a um campo nullable de um objeto sem verificar se é null, ocorrerá uma exceção NullPointerException (NPE).

Para acesso seguro, pode usar as seguintes abordagens:

  1. Operador de chamada segura (?.): Retorna null se o objeto for null, caso contrário realiza a chamada.

    // Suponha que user? seja um User?
    val userName: String? = user?.name
    
  2. Operador de afirmação de não-null (!!): Confirma explicitamente que o objeto não é null. Se for null, lança NullPointerException.

    // Usar conscientemente, pode levar a NPE
    val userName: String = user!!.name
    
  3. Operador Elvis (?:): Fornece um valor padrão se o objeto à esquerda do operador ?: for null.

    val userName: String = user?.name ?: "Utilizador Desconhecido"
    
  4. Blocos if ou when: Verificação explícita de null.

    if (user != null) {
        val userName = user.name
    } else {
        // Tratamento do caso em que user é null
    }
    
  5. Funções let, run, apply, with com chamada segura:

    user?.let {
        // `it` dentro deste bloco é um `User` não nulo
        val userName = it.name
    }
    

A escolha da abordagem depende da lógica do programa e do comportamento desejado no caso de o objeto ser null. Geralmente, recomenda-se usar o operador de chamada segura (?.) ou o operador Elvis (?:) para evitar NPE. O operador !! deve ser usado com cautela.