Kotlin
Kotlin

Kotlin e seu Null Safety


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!

 


I'm Pedro Mendes, a passionate developer and technology enthusiast. This blog covers programming and technology in the broadest sense possible. It's the place I collect my thoughts, work and findings to share with the public.

View Comments
  • Pedro Emanuel dos Santos Azeve

    Nice Job my friend !!