Kotlin

Kotlin e seu Null Safety

Written by Pedro Mendes · 1 min read >

Kotlin é uma linguagem que já esta no mercado há alguns anos, mas foi recentemente anunciada pela Google como uma das linguagens oficialmente suportadas no ambiente de desenvolvimento Android. Resultado? Um boom nas buscas segundo o Google Trends:

Entre o pacote de motivos pelo qual Kotlin faz “a vida de um desenvolvedor Java ser mais feliz”, um dos pontos mais aclamados é como ela lida com valores nulos, ou seja, sua nullability. Embora nem tudo sejam flores, vamos entender como funciona essa mecânica e como tirar proveito dela.

Referências nulas e suas NullPointerExceptions (NPEs) não são coisas boas – tanto que são chamadas de The Billion Dollar Mistake. Então, para começo de conversa, o seguinte trecho de código é completamente ilegal no Kotlin:

Isso acontece porque por padrão objetos não são nullables, ou em português claro e direto: não recebem null.  O mesmo acontece para argumentos de função:

Nesse ponto você pode estar se perguntando: “mas e se eu quiser valores nulos?”. Você pode explicitamente informar que uma variável é optional (que pode ser nula) durante sua declaração usando o operador ?, como no exemplo:

Porém ao declarar que algo pode ser nulo, o Kotlin exige que você lide com esse objeto de maneira diferente. Você não pode operar métodos em um objeto optional como faz com os não optional. Por exemplo, isso aqui também é ilegal no Kotlin:

Sempre que precisar acessar métodos em um objeto opcional, use o operador ? antes do método, como no exemplo:

Como você pode perceber, eu não posso receber diretamente o retorno de uma operação realizada em um objeto opcional em objeto não opcional – por isso a variável myVarLength também precisa ser opcional. O Kotlin provê o operador ?:  para declarar rapidamente um valor padrão caso o objeto esteja nulo:

Se você tiver que lidar com objetos optionals, o Kotlin permite através do seu Smart Cast um atalho para que você não tenha que ficar usando o operador ? em toda linha: caso seu bloco de código assegure que um objeto não é nulo, você não precisa usar o operador ?. Exemplo:

Optionals do Kotlin e a tal interoperabilidade com códigos Java

Como lidar no Kotlin ao usar códigos Java, já que Java permite valores nulos em quase tudo? A equipe do Kotlin fez um belo trabalho se preocupando em tratar códigos importados do Java de maneira mais “relaxada”, criando uma categoria especial de tipos chamada platform types. Você não pode criar manualmente objetos com esse tipo, mas eles estão lá sempre que usamos códigos Java.

Com isso, você não precisa ficar usando o operador ? sempre que precisar acessar o objeto. A parte ruim é que neste caso você precisa tomar cuidado com NPEs em runtime, fazendo null check sempre que preciso.

Conclusão

Null safety é só um de muitos outros aspectos positivos da linguagem. Se você já esta usando, deixa ai nos comentários o que tem agradado (ou não). Até a próxima!

 

Kotlin e Lambda Functions

Pedro Mendes in Kotlin
  ·   1 min read

2 Replies to “Kotlin e seu Null Safety”

  1. o que não gostei do não nulo é o tamanho do arquivo Json, passa a inserir esses campos que antes não iam, mas trabalhar com não nulo seria melhor, hehe

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *