devterview_$ iniciar simulação

Null safety no sistema de tipos do Kotlin

FácilJúniorSistema de tipos

Pergunta

Como o Kotlin trata nulabilidade e por que `!!` é considerado um code smell?

Resposta esperada

No Kotlin, `String` nunca é nulo; se pode ser, o tipo é `String?`, e o compilador te obriga a lidar com isso antes de acessar membros — via `?.` (safe call, retorna null se o receptor for null), `?:` (Elvis, valor padrão), `let` com smart cast, ou uma checagem que o compilador entende. O `!!` (not-null assertion) diz 'confie em mim, não é null' e lança `NullPointerException` se estiver errado — ele joga fora a garantia que o sistema de tipos daria e recria exatamente o problema que o Kotlin quer eliminar. Uso legítimo é raro (interop com Java onde você tem certeza por contrato externo). Preferir `?.`/`?:`/checagem, ou repensar por que o valor é nulável ali.

Por que perguntam isso

Pergunta pleno de Kotlin. Sinal bom: reconhecer que `!!` recria o NPE que o sistema de tipos evitaria e que seu uso legítimo é quase só interop com Java.

#null-safety#nullable#smart-cast
publicidade

Perguntas de acompanhamento

Relacionadas