Junior — Middle
Explique le concept de covariance dans les génériques en Kotlin et son application
sobes.tech IA
Réponse de l'IA
La covariance en Kotlin est une propriété des génériques qui permet d'utiliser un type plus spécifique à la place du type de base lors de la lecture de données. Elle est indiquée par le mot-clé out dans la déclaration du type, par exemple, interface Producer<out T>. Cela signifie que Producer<Cat> peut être utilisé là où l'on attend Producer<Animal>, si Cat hérite de Animal.
L'utilisation de la covariance est utile lorsque le générique est utilisé uniquement pour la sortie (lecture) de données, mais pas pour l'écriture. Cela garantit la sécurité des types et la flexibilité de l'API.
Exemple :
open class Animal
class Cat : Animal()
interface Producer<out T> {
fun produce(): T
}
fun feedAnimals(animals: Producer<Animal>) {
val animal = animals.produce()
// nourrir l'animal
}
val catsProducer: Producer<Cat> = object : Producer<Cat> {
override fun produce() = Cat()
}
feedAnimals(catsProducer) // Fonctionne grâce à la covariance