Como usar Elvis Operator
Explica o conceito de Null Safety no Kotlin e como o Elvis Operator (?:) ajuda a tratar valores nulos de forma elegante e segura.
Kotlinautas
Esse conteúdo é oferecido e distribuído pela comunidade Kotlinautas, uma comunidade brasileira que busca oferecer conteúdo gratuito sobre a linguagem Kotlin em um espaço plural.

O que é Null Safety?
Kotlin é uma linguagem que aproveita recursos de outras linguagens , e melhora muita coisa, especialmente em relação ao Java.
Quem já programou em Java provavelmente já sofreu com o NullPointerException, um erro que acontece quando tentamos usar uma propriedade de uma classe que tem seu valor como null.
A linguagem Kotlin tenta ao máximo evitar esse tipo de problema. Adicionando garantias que o seu código DEVE ser seguro á erros envolvendo instâncias de classes, variáveis, propriedades,etc. que podem ser nulas.
Para poder utilizar uma propriedade que pode ser nula, é necessário ou fazer o tratamento caso essa variável seja um erro, ou usando !! para dizer ao Kotlin que você tem certeza que não terá nenhum erro relacionado. Como no exemplo abaixo:
val nome = usuario!!.nome
- No exemplo acima,
usuariopode ser uma variável nula, e por conta disso foi usado o símbolo!!, deixando claro ao Kotlinque temos certeza que essa variável não énull. Caso sejanull, um erro vai ser lançado.
Podemos também como foi citado acima, tratar esse erro, buscando evitar o problema de termos um erro indesejado na nossa aplicação. E esse tratamento pode ser feito usando Elvis Operator
O que é Elvis Operator?
O Elvis Operator (?:) é um operador que usamos junto a uma propriedade ou variável que pode ter null como valor. Assim:
repositorioPostagem.encontrar(10) ?:
- Usamos um exemplo comum, um sistema onde precisamos pegar uma postagem (ou qualquer outro item que está guardado dentro do banco de dados), e caso essa postagem com esse ID
10não seja encontrada, iremos usar o tratamento no Elvis Operator (que por enquanto não existe) - Elvis Operator tem esse formato de
?:por conta que parece com o cabelo do Elvis Presley.
A expressão á direita do Elvis Operator representa o quê vamos fazer caso essa propriedade ou variável seja nula. Podemos por exemplo, retornar a função:
fun pegarTituloDaPostagem(id: Int): String {
return repositorioPostagem.encontrar(id).titulo ?: return "postagem não encontrada"
}
- Temos uma função que irá retornar o título de uma postagem. Caso a postagem não seja encontrada, a postagem será
null, com isso o Elvis Operator irá fazer que a stringpostagem não encontradaseja retornada, pois não há nenhuma postagem relacionada com esse ID.
Esse exemplo é simples, mas há situações em que é realmente necessário usar um Elvis Operator para garantir que o seu código não vai dar nenhum erro inesperado, pois como o próprio nome diz, não tem como planejar quando um erro inesperado irá acontecer.
Finalização
Neste artigo você aprendeu como utilizar o Elvis Operator para tornar seu código mais legível e com melhor tratamento de erros. Evitando erros inesperados, deixando sua aplicação mais resiliente.