Digamos que quiero una variable de tipo, T, que amplíe una determinada clase e implemente una interfaz. Algo como:
class Foo <T : Bar implements Baz> { ... }
¿Cuál es la sintaxis de esto en Kotlin?
Solo se puede especificar un límite superior dentro de los corchetes angulares.
Kotlin ofrece una sintaxis diferente para restricciones genéricas cuando hay más de una restricción:
class Foo<T>(val t: T) where T : Bar, T : Baz { ... }
y para funciones:
fun <T> f(): Foo where T : Bar, T : Baz { ... }
Está documentado aquí .
fun <T> wrapClientListener(listener: RemoteController.OnClientUpdateListener): T where T : RemoteController.OnClientUpdateListener, T : NotificationListenerService
. No me importa el tipo de T. Pero cuando llamo a este método, Kotlin pregunta por el tipo específico. Entonces, ¿cómo puedo llamar a este método?