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 chevrons.
Kotlin propose une syntaxe différente pour les contraintes génériques lorsqu'il y a plus d'une contrainte:
class Foo<T>(val t: T) where T : Bar, T : Baz { ... }
et pour les fonctions:
fun <T> f(): Foo where T : Bar, T : Baz { ... }
Il est documenté ici .
fun <T> wrapClientListener(listener: RemoteController.OnClientUpdateListener): T where T : RemoteController.OnClientUpdateListener, T : NotificationListenerService
. Je me fiche du type de T. Mais quand j'appelle cette méthode, Kotlin demande le type spécifique. Alors, comment puis-je appeler cette méthode?