Sobes.tech
Middle

É possível obter uma NullPointerException em Kotlin?

sobes.tech IA

Resposta da IA

Sim, é possível. Apesar do sistema de tipos estrito e dos tipos nullable (?), NullPointerException pode ocorrer nos seguintes casos:

  • Ao chamar código Java sem anotações de null-safety: Se um método Java retornar null, e esse método for chamado em Kotlin sem uma verificação explícita de null, Kotlin pode lançar uma NullPointerException ao tentar acessar os membros desse objeto.

  • Uso do operador !! (chamada com afirmação de não nulo): Este operador indica explicitamente que o valor não pode ser null. Se na verdade for null, uma NullPointerException será lançada.

    // Exemplo de uso do operador "!!"
    var nullableString: String? = null
    val nonNullString: String = nullableString!! // Lançará NullPointerException
    
  • Variáveis lateinit var não inicializadas: Se uma variável declarada com a palavra-chave lateinit for usada antes de sua inicialização, será lançada uma UninitializedPropertyAccessException, que é uma subclasse de RuntimeException e por sua natureza se assemelha a uma NullPointerException.

  • Violação do contrato @NonNull no código Java: Se um método Java anotado com @NonNull retornar na verdade null, ao chamá-lo de Kotlin pode ocorrer uma NullPointerException.

  • Problemas na interoperabilidade com C/C++: O código escrito em Kotlin pode interagir com código nativo via JNI. Erros no código nativo ou manejo incorreto de ponteiros podem levar a falhas ou NullPointerException na JVM.