Um dos contratempos mais comuns em muitas linguagens de programação, como o Java, é que acessar um membro de uma referência nula resultará em uma exceção de referência nula. Em Java, isso seria o equivalente a um NullPointerException ou NPE para abreviar.
O sistema de tipos do Kotlin visa eliminar NullPointerException do nosso código.
Kotlin fornece operadores Safe call(?.) , Elvis(?:), Not-null assertion(!!) para trabalhar em tipos anuláveis.
Safe Call(?.)
Você pode usar o operador de chamada segura (?.) se não quiser lançar uma NullPointerException ao tentar acessar a referência anulável "safeCall"
val safeCall: String? = null
println(safeCall?.length)
- Retorna null se for anulável e não lançará NullPointerException
Elvis Operator(?:)
Quando temos uma referência anulável da variável "valor", podemos dizer “se 'valor' não for nulo, use-o, caso contrário, use algum valor não nulo”:
val valor: Int =
if (valorVariavel != null) valorVariavel.length
else -1
O código acima pode ser expresso com o Elvis Operator, escrito ?:
valorVariavel?.length ?: -1
Se a expressão à esquerda de ?: não for nula, o Elvis Operator a retorna, caso contrário, retorna a expressão à direita. Observe que a expressão do lado direito é avaliada somente se o lado esquerdo for nulo
Outro exemplo:
fun foo(node: Node): String? {
val parent = node.getParent() ?: return null
val name = node.getName() ?: throw IllegalArgumentException("Exceção lançada")
parent.getParent()?.getName()?.length
return name
}
Not-null assertion operator(!!)
No caso abaixo, se a variável "pergunta" for nula, ocorrerá através da exceção de ponteiro nulo. Você pode usar (!!) se quiser lançar explicitamente uma exceção se o tipo for anulável.
val pergunta: String? = null
pergunta!!.toInt()
Top comments (0)