Avatar ·

O que é null/nil em Kotlin e como trabalhar com isso?

Olá a todos! Comecei a estudar Kotlin depois de Java e não consigo entender completamente o conceito de null nesta linguagem. Em Java, null é uma referência comum que pode ser atribuída a qualquer objeto, e estamos constantemente lutando contra NullPointerException. Em Kotlin, pelo que entendi, os tipos são non-null por padrão, e para trabalhar com null é necessário usar construções especiais.

Tenho algumas perguntas e problemas específicos:

  1. Estou correto ao entender que String? (com ponto de interrogação) é um tipo nullable, e String é non-null? E se eu tentar atribuir null a uma variável do tipo String sem o ponto de interrogação, ocorrerá um erro de compilação?
  2. Tentei escrever um código simples, mas ele não compila:
fun main() {
    val name: String? = null
    println(name.length) // Erro: Only safe (?.) or non-null asserted (!!.) calls are allowed
}

Eu esperava que uma exceção fosse lançada em tempo de execução, como em Java.