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?
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?
Respuestas:
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?