Junior — Middle
Vysvetlite koncept kovariancie v generikách v Kotlin a jeho použitie
sobes.tech AI
Odpoveď od AI
Kovariancia v Kotlin je vlastnosť generík, ktorá umožňuje používať špecifickejší typ namiesto základného pri čítaní dát. Je označená kľúčovým slovom out v deklarácii typu, napríklad interface Producer<out T>. To znamená, že Producer<Cat> môže byť použitý tam, kde sa očakáva Producer<Animal>, ak Cat dedí od Animal.
Použitie kovariancie je užitočné, keď sa generik používa iba na výstup (čítanie) dát, nie na zápis. To zabezpečuje bezpečnosť typov a flexibilitu API.
Príklad:
open class Animal
class Cat : Animal()
interface Producer<out T> {
fun produce(): T
}
fun feedAnimals(animals: Producer<Animal>) {
val animal = animals.produce()
// kŕmime zviera
}
val catsProducer: Producer<Cat> = object : Producer<Cat> {
override fun produce() = Cat()
}
feedAnimals(catsProducer) // Funguje vďaka kovariancii