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 tipo —
Nothingé 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.