Ответ
В Kotlin можно ограничить Generic параметр интерфейсом с помощью where или :. Пример:
interface MyInterface {
fun doSomething()
}
class MyClass<T> where T : MyInterface {
fun process(item: T) {
item.doSomething()
}
}
// Или альтернативный синтаксис:
class AnotherClass<T : MyInterface>(val item: T)
Ключевые моменты:
- Ограничение гарантирует, что тип T реализует MyInterface
- Можно использовать несколько ограничений через
where T : A, T : B - Внутри класса доступны все методы интерфейса для типа T
Пример использования:
class Implementation : MyInterface {
override fun doSomething() = println("Working")
}
val obj = MyClass<Implementation>()