Junior — Middle
Jaké jsou nuance použití typu Nothing v generikách?
sobes.tech AI
Odpověď od AI
Typ Nothing v Kotlinu je speciální typ, který nemá žádné hodnoty a používá se k označení funkcí, které nikdy nevrátí výsledek (například vyhazují výjimku nebo běží nekonečně).
V kontextu generik (generics) hraje Nothing důležitou roli:
- Používá se jako spodní hranice typu —
Nothingje podtypem všech typů, takže jej lze použít k označení, že parametr typu nemůže mít žádné hodnoty. - Umožňuje vyjádřit absenci hodnoty — například
List<Nothing>je seznam, který nemůže obsahovat žádné prvky. - Používá se k bezpečnému označení absence typu na kovariantních pozicích.
Příklad použití v generikách:
fun <T> fail(): T {
throw RuntimeException("Failure")
}
val x: String = fail() // Kompilátor chápe, že fail() vrací `Nothing`, což je podtyp Stringu
Nebo v kolekcích:
val emptyList: List<Nothing> = listOf()
Tímto způsobem Nothing pomáhá kompilátoru pochopit, že na některých místech nebudou žádné hodnoty, a umožňuje bezpečně pracovat s takovými případy v generikách.