Disons que je veux une variable de type, T, qui étend une certaine classe et implémente une interface. Quelque chose comme:
class Foo <T : Bar implements Baz> { ... }
Quelle est la syntaxe pour cela dans Kotlin?
Une seule limite supérieure peut être spécifiée à l'intérieur des crochets.
Kotlin propose une syntaxe différente pour les contraintes génériques lorsqu'il existe plusieurs contraintes:
class Foo<T>(val t: T) where T : Bar, T : Baz { ... }
et pour les fonctions:
fun <T> f(): Foo where T : Bar, T : Baz { ... }
C'est documenté ici .