Junior — Middle
Aké sú nuansy použitia typu Nothing v generikách?
sobes.tech AI
Odpoveď od AI
Typ Nothing v Kotlinu je špeciálny typ, ktorý nemá žiadne hodnoty a používa sa na označenie funkcií, ktoré nikdy nevrátia výsledok (napríklad, ktoré vyhadzujú výnimku alebo bežia nekonečne).
V kontexte generík (generics) hrá Nothing dôležitú úlohu:
- Používa sa ako spodná hranica typu —
Nothingje podtypom všetkých typov, takže ho možno použiť na označenie, že parameter typu nemôže mať hodnoty. - Umožňuje vyjadriť absenciu hodnoty — napríklad,
List<Nothing>je zoznam, ktorý nemôže obsahovať žiadne prvky. - Používa sa na bezpečné označenie absencie typu na kovariantných pozíciách.
Príklad použitia v generikách:
fun <T> fail(): T {
throw RuntimeException("Failure")
}
val x: String = fail() // Kompilátor chápe, že fail() vracia `Nothing`, čo je podtyp Stringu
Alebo v kolekciách:
val emptyList: List<Nothing> = listOf()
Takto Nothing pomáha kompilátoru pochopiť, že na niektorých miestach nebudú hodnoty, a umožňuje bezpečnú prácu s takýmito prípadmi v generikách.