Kotlin "Cualquier tipo que implemente una interfaz"

Tengo una interfaz de delegado:

interface Delegate { fun didSelectWord(word: String) } 

Y me gustaría tener una propiedad llamada delegate

 val delegate: <T> where T : Delegate 

el delegate puede ser cualquier cosa que implemente Delegado

También he intentado

 val delegate: Any : Delegate 

Pero ambos dan error de compilation

La solución es bastante fácil

 val delegate: Delegate 

Ahora algo como esto funciona

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

Si desea utilizar una function que solo está presente en Test , pero no en Delegate , debe convertirla

 (delegate as Test).yourMethod() 

De lo contrario, solo funcionarán las funciones que estén presentes en Delegate

delegate.yourMethod() no funcionará.

Puedes hacer así:

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

Convierta la class un tipo genérico que declare el parámetro de tipo T Y puede crear properties de tipo T

  • Android Studio muestra la advertencia de dependencia de Kotlin después de la segunda compilation
  • Kotlin REST a las definiciones de mecanografía
  • Debería hashCode () devolver el ID único de un object
  • Termine la actividad de Android desde otro con Kotlin
  • ¿Cómo resolver la ambigüedad de sobrecarga en las references de methods?
  • android-kotlin error: databinding de reference no resuelto & ActivityMainBinding
  • AAR / JAR no se genera con Android Studio 3.0 Canary 7
  • Invertir un infijo boolean resultado kotlin
  • Definición de la function: fun vs val
  • Java 8 lambda a kotlin lambda
  • RXJava Ignorar error y continuar en cadena