Say I want a type variable, T, that extends a certain class and implements an interface. Something like:
class Foo <T : Bar implements Baz> { ... } What is the syntax for this in Kotlin?
Only one upper bound can be specified inside the angle brackets.
Kotlin offers different syntax for generic constraints when there is more than one constraint:
class Foo<T>(val t: T) where T : Bar, T : Baz { ... } and for functions:
fun <T> f(): Foo where T : Bar, T : Baz { ... } It is documented here.
fun <T> wrapClientListener(listener: RemoteController.OnClientUpdateListener): T where T : RemoteController.OnClientUpdateListener, T : NotificationListenerService. I don't care of T's type. But When I call this method, Kotlin asks for the specific type. So how can i call this method?