Reputation: 1412
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?
Upvotes: 131
Views: 68070
Reputation: 148159
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.
Upvotes: 267