Sobes.tech
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 typuNothing je 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.