Avatar ·

Que signifie le mot-clé out en Kotlin et comment l'utiliser avec les génériques ?

Bonjour ! J'ai commencé à apprendre Kotlin après Java et je suis tombé sur une construction que je ne comprends pas. En Java, je suis habitué aux génériques avec des wildcards comme `? extends T` et `? super T`. Mais en Kotlin, je vois les mots-clés `in` et `out` directement dans la déclaration de la classe. Par exemple, je suis tombé sur ce code : ```kotlin interface Source { fun get(): T } ``` Que signifie `out` avant `T` ? J'ai essayé d'écrire ma propre classe sans `out` : ```kotlin class Box(private val item: T) { fun get(): T = item fun set(newItem: T) { /* ... */ } } ``` Et ça fonctionne. Mais si j'ajoute `out`, le compilateur se plaint de la méthode `set`. Pourquoi ? Et à quoi sert `out` en général ? Dans quelles situations faut-il l'utiliser ? Quel est le lien avec le principe PECS (Producer Extends, Consumer Super) de Java ? Expliquez-moi, s'il vous plaît, avec des exemples simples pour que je comprenne quand et pourquoi utiliser `out` en Kotlin. <<>>

Qu'est-ce que out en Kotlin : déclaration de variance (declaration-site variance)

Le mot-clé