Sobes.tech
Junior — Middle

Quais são as nuances do uso do tipo Nothing em genéricos?

sobes.tech IA

Resposta da IA

O tipo Nothing em Kotlin é um tipo especial que não possui valores e é usado para indicar funções que nunca retornam um resultado (por exemplo, que lançam uma exceção ou executam-se indefinidamente).

No contexto de genéricos (generics), o Nothing desempenha um papel importante:

  • Usado como limite inferior do tipoNothing é um subtipo de todos os tipos, podendo ser usado para indicar que um parâmetro de tipo não pode ter valores.
  • Permite expressar a ausência de valor — por exemplo, List<Nothing> é uma lista que não pode conter elementos.
  • Aplicado para indicar de forma segura a ausência de tipo em posições covariantes.

Exemplo de uso em genéricos:

fun <T> fail(): T {
    throw RuntimeException("Failure")
}

val x: String = fail() // O compilador entende que fail() retorna Nothing, que é um subtipo de String

Ou em coleções:

val emptyList: List<Nothing> = listOf()

Assim, Nothing ajuda o compilador a entender que em alguns locais não haverá valores, permitindo trabalhar de forma segura com esses casos em genéricos.