Скажімо, я хочу змінну типу T, яка розширює певний клас і реалізує інтерфейс. Щось на зразок:
class Foo <T : Bar implements Baz> { ... }
Який синтаксис цього слова у Котліні?
Скажімо, я хочу змінну типу T, яка розширює певний клас і реалізує інтерфейс. Щось на зразок:
class Foo <T : Bar implements Baz> { ... }
Який синтаксис цього слова у Котліні?
Відповіді:
Всередині кутових дужок може бути вказана лише одна верхня межа.
Kotlin пропонує різний синтаксис для загальних обмежень, коли існує більше одного обмеження:
class Foo<T>(val t: T) where T : Bar, T : Baz { ... }
а для функцій:
fun <T> f(): Foo where T : Bar, T : Baz { ... }
Це задокументовано тут .
fun <T> wrapClientListener(listener: RemoteController.OnClientUpdateListener): T where T : RemoteController.OnClientUpdateListener, T : NotificationListenerService
. Мені все одно тип Т. Але коли я називаю цей метод, Котлін запитує конкретний тип. То як я можу викликати цей метод?