Réponses de variance : si Dog est un sous-type d'Animal, List<Dog> est-il un sous-type de List<Animal> ? Dans Kotlin, les types génériques sont invariants par défaut — List<Dog> n'est pas List<Animal> pour des raisons de sécurité de mutabilité. Utilisez out (covariant) lorsque vous produisez uniquement T — en lecture seule. Utilisez in (contravariant) lorsque vous consommez uniquement T — comme Comparator<Animal> acceptant Comparator<Dog>.
dehors — producteurs