Junior — Middle
Leg het concept van covariantie in generics in Kotlin uit en de toepassing ervan
sobes.tech AI
Antwoord van AI
Kovariantie in Kotlin is een eigenschap van generics die het mogelijk maakt om een meer specifiek type te gebruiken in plaats van het basistype bij het lezen van gegevens. Het wordt aangegeven met het sleutelwoord out in de type-verklaring, bijvoorbeeld interface Producer<out T>. Dit betekent dat Producer<Cat> gebruikt kan worden waar Producer<Animal> wordt verwacht, als Cat afstamt van Animal.
Het gebruik van kovariantie is handig wanneer de generic alleen wordt gebruikt voor output (lezen) van gegevens, maar niet voor invoer. Dit zorgt voor typeveiligheid en API-flexibiliteit.
Voorbeeld:
open class Animal
class Cat : Animal()
interface Producer<out T> {
fun produce(): T
}
fun feedAnimals(animals: Producer<Animal>) {
val animal = animals.produce()
// voed het dier
}
val catsProducer: Producer<Cat> = object : Producer<Cat> {
override fun produce() = Cat()
}
feedAnimals(catsProducer) // Werkt dankzij kovariantie