Kotlin "Любой тип, который реализует интерфейс"

У меня есть интерфейс делегата:

interface Delegate { fun didSelectWord(word: String) } 

И я хотел бы иметь свойство, называемое delegate

 val delegate: <T> where T : Delegate 

delegate может быть все, что реализует делегат

Я также пробовал

 val delegate: Any : Delegate 

Но оба дают ошибку компиляции

Решение довольно простое

 val delegate: Delegate 

Теперь что-то подобное работает

 interface Delegate class Test: Delegate { fun yourMethod() = "Your Method" } fun test() { val delegate: Delegate delegate = Test() println(delegate) } 

Если вы хотите использовать функцию, присутствующую только в Test , но не в Delegate , вам нужно отбросить ее

 (delegate as Test).yourMethod() 

В противном случае будут работать только функции, присутствующие в Delegate

delegate.yourMethod() не будет работать.

Вы можете сделать так:

 class SomeClass<T : Delegate> { val delegate: T = // initialize delegate ... } 

Сделайте class универсальным типом, объявляющим параметр типа T И вы можете создавать свойства типа T