Menu
Coddy logo textTech

Asserção de não nulo

Parte da seção Fundamentos do Journey de Kotlin da Coddy. Lição 17 de 93.

O operador de chamada segura e o operador Elvis lidam com valores nulos de forma elegante, mas às vezes você tem absoluta certeza de que um valor anulável não é nulo em um ponto específico do seu código. O operador de asserção de não nulo !! permite dizer ao Kotlin: "Eu garanto que isto não é nulo."

fun main() {
    val name: String? = "Alice"
    val length = name!!.length  // Converte String? para String
    println(length)  // Imprime: 5
}

O operador !! converte um tipo anulável em seu equivalente não anulável. No entanto, se o valor for realmente nulo, seu programa falhará com uma NullPointerException:

fun main() {
    val name: String? = null
    val length = name!!.length  // Trava aqui!
}

Quando usá-lo: Use !! somente quando você tiver uma lógica que garanta que o valor não pode ser nulo, mas o compilador não consiga verificar isso. Na maioria dos casos, prefira chamadas seguras ?. ou o operador Elvis ?:. A asserção de não nulo deve ser seu último recurso, não sua primeira escolha.

challenge icon

Desafio

Fácil

Escreva uma função getUppercaseLength que receba um parâmetro text e retorne o comprimento da sua versão em maiúsculas.

A função recebe um valor de string não nulo, mas o tipo do parâmetro permite nulo (String?). Use o operador de asserção de não nulo !! para convertê-lo em um tipo que não permite nulo; em seguida, encadeie o método uppercase() e obtenha o length.

Parâmetros:

  • text (String?): Uma string que permite nulo e que tem garantia de conter um valor

Retorna: O comprimento da versão em maiúsculas do texto (Int)

Observação: para este desafio, a entrada será sempre uma string válida, nunca null. Isso simula um cenário em que você sabe que o valor existe, mas o compilador não consegue verificar isso.

Experimente você mesmo

fun getUppercaseLength(text: String?): Int {
    // Escreva o código aqui
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos

Pratique por conta própria: Playground de Kotlin