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:
-
Operador de chamada segura (
?.): Retornanullse o objeto fornull, caso contrário realiza a chamada.// Suponha que user? seja um User? val userName: String? = user?.name -
Operador de afirmação de não-null (
!!): Confirma explicitamente que o objeto não énull. Se fornull, lançaNullPointerException.// Usar conscientemente, pode levar a NPE val userName: String = user!!.name -
Operador Elvis (
?:): Fornece um valor padrão se o objeto à esquerda do operador?:fornull.val userName: String = user?.name ?: "Utilizador Desconhecido" -
Blocos
ifouwhen: Verificação explícita denull.if (user != null) { val userName = user.name } else { // Tratamento do caso em que user é null } -
Funções
let,run,apply,withcom 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.